首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到spark RDD/Dataframe大小?

如何找到spark RDD/Dataframe大小?
EN

Stack Overflow用户
提问于 2016-01-26 14:28:31
回答 3查看 112.6K关注 0票数 45

我知道如何在scala.But中找到文件大小如何在spark中找到RDD/dataframe大小?

Scala:

代码语言:javascript
复制
object Main extends App {
  val file = new java.io.File("hdfs://localhost:9000/samplefile.txt").toString()
  println(file.length)
}

火花:

代码语言:javascript
复制
val distFile = sc.textFile(file)
println(distFile.length)

但如果我处理它,不会得到文件大小。如何找到RDD大小?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-01 11:25:18

是的,我终于找到了答案。包括这些库。

代码语言:javascript
复制
import org.apache.spark.sql.Row
import org.apache.spark.rdd.RDD
import org.apache.spark.rdd

如何查找RDD大小:

代码语言:javascript
复制
def calcRDDSize(rdd: RDD[String]): Long = {
  rdd.map(_.getBytes("UTF-8").length.toLong)
     .reduce(_+_) //add the sizes together
}

查找DataFrame大小的函数:(此函数仅在内部将DataFrame转换为RDD )

代码语言:javascript
复制
val dataFrame = sc.textFile(args(1)).toDF() // you can replace args(1) with any path

val rddOfDataframe = dataFrame.rdd.map(_.toString())

val size = calcRDDSize(rddOfDataframe)
票数 13
EN

Stack Overflow用户

发布于 2016-01-26 15:09:14

如果您只是想计算rdd中的行数,请执行以下操作:

代码语言:javascript
复制
val distFile = sc.textFile(file)
println(distFile.count)

如果您对字节感兴趣,可以使用SizeEstimator

代码语言:javascript
复制
import org.apache.spark.util.SizeEstimator
println(SizeEstimator.estimate(distFile))

https://spark.apache.org/docs/latest/api/java/org/apache/spark/util/SizeEstimator.html

票数 71
EN

Stack Overflow用户

发布于 2017-06-27 02:45:47

下面是除了SizeEstimator.I经常使用之外的一种方式

从代码中了解RDD是否被缓存,更准确地说,它有多少分区缓存在内存中,有多少分区缓存在磁盘上?要获得存储级别,还需要知道当前的实际缓存status.to知道内存消耗情况。

Spark Context有开发人员api方法getRDDStorageInfo(),偶尔你可以用到这个。

返回关于缓存了哪些RDDs的信息,它们是否在内存或磁盘上,它们占用了多少空间,等等。

例如:

scala> sc.getRDDStorageInfo res3: Arrayorg.apache.spark.storage.RDDInfo =数组(RDD "HiveTableScan name#0,(MetastoreRelation sc.getRDDStorageInfo,firsttable,None),None“(3) StorageLevel: StorageLevel(false,true,false,true,1);CachedPartitions: 1;

TotalPartitions: 1;MemorySize: 256.0 B; ExternalBlockStoreSize: 0.0B;DiskSize: 0.0B)

spark ui似乎也使用了与此code相同的功能

请参阅describes...

描述

在SPARK-13992中,Spark支持将数据持久化到堆外内存中,但是目前堆外内存的使用还没有公开,用户监控和分析不太方便,所以这里建议在不同的地方公开堆外内存和堆上内存的使用情况:

  1. Spark UI的executor页面将同时显示堆上和堆外内存使用情况。
  2. REST请求同时返回堆上和堆外内存。这两个内存使用情况也可以通过编程方式从SparkListener.

获得

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35008123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档