복붙노트

[SCALA] 어떻게 스파크 RDD / Dataframe 크기를 찾는 방법은?

SCALA

어떻게 스파크 RDD / Dataframe 크기를 찾는 방법은?

나는 RDD / 스파크에서 dataframe 크기를 찾는 방법 scala.But에서 파일 크기를 찾는 방법을 알아?

규모 :

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 크기를 찾는 방법은?

해결법

  1. ==============================

    1.당신은 단순히 RDD의 행 수를 계산하기 위해 찾고 있다면, 수행

    당신은 단순히 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

  2. ==============================

    2.예 마지막으로 나는 해결책을 얻었다. 이 라이브러리를 포함합니다.

    예 마지막으로 나는 해결책을 얻었다. 이 라이브러리를 포함합니다.

    import org.apache.spark.sql.Row
    import org.apache.spark.rdd.RDD
    import org.apache.spark.rdd
    import org.apache.spark.util.SizeEstimator
    

    어떻게 RDD 크기를 찾을 수 있습니다 :

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

    기능 DataFrame 크기를 찾을 수 있습니다 :  (이 기능은 내부적으로 RDD에 DataFrame 변환)

    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)
    
  3. ==============================

    3.다음은 자주 SizeEstimator.I의 사용으로 하나의 방법 떨어져이다

    다음은 자주 SizeEstimator.I의 사용으로 하나의 방법 떨어져이다

    이 캐시되는 경우 RDD에 대한 코드에서 알고, 더 정확하게, 얼마나 많은 해당 파티션의 메모리에 캐시 얼마나 많은 것은 디스크에 캐시됩니다? 스토리지 레벨을 얻기 위해, 또한 현재 실제 캐싱 status.to 알고 메모리 소비를 알고 싶어요.

    스파크 컨텍스트) (현상 API 메소드 getRDDStorageInfo을 갖는다 때때로 당신은이를 사용할 수 있습니다.

  4. from https://stackoverflow.com/questions/35008123/how-to-find-spark-rdd-dataframe-size by cc-by-sa and MIT license