我知道如何在scala.But中找到文件大小如何在spark中找到RDD/dataframe大小?
Scala:
object Main extends App {
val file = new java.io.File("hdfs://localhost:9000/samplefile.txt").toString()
println(file.length)
}火花:
val distFile = sc.textFile(file)
println(distFile.length)但如果我处理它,不会得到文件大小。如何找到RDD大小?
发布于 2016-02-01 11:25:18
是的,我终于找到了答案。包括这些库。
import org.apache.spark.sql.Row
import org.apache.spark.rdd.RDD
import org.apache.spark.rdd如何查找RDD大小:
def calcRDDSize(rdd: RDD[String]): Long = {
rdd.map(_.getBytes("UTF-8").length.toLong)
.reduce(_+_) //add the sizes together
}查找DataFrame大小的函数:(此函数仅在内部将DataFrame转换为RDD )
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)发布于 2016-01-26 15:09:14
如果您只是想计算rdd中的行数,请执行以下操作:
val distFile = sc.textFile(file)
println(distFile.count)如果您对字节感兴趣,可以使用SizeEstimator
import org.apache.spark.util.SizeEstimator
println(SizeEstimator.estimate(distFile))https://spark.apache.org/docs/latest/api/java/org/apache/spark/util/SizeEstimator.html
发布于 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支持将数据持久化到堆外内存中,但是目前堆外内存的使用还没有公开,用户监控和分析不太方便,所以这里建议在不同的地方公开堆外内存和堆上内存的使用情况:
获得
https://stackoverflow.com/questions/35008123
复制相似问题