Hola, tenemos la solución a tu búsqueda, continúa leyendo y la hallarás aquí.
Solución:
Si simplemente está buscando contar el número de filas en el rdd
hacer:
val distFile = sc.textFile(file)
println(distFile.count)
Si está interesado en los bytes, puede utilizar el 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
Sí. Finalmente obtuve la solución. Incluya estas bibliotecas.
import org.apache.spark.sql.Row
import org.apache.spark.rdd.RDD
import org.apache.spark.rdd
Cómo encontrar el tamaño de RDD:
def calcRDDSize(rdd: RDD[String]): Long =
rdd.map(_.getBytes("UTF-8").length.toLong)
.reduce(_+_) //add the sizes together
Función para encontrar el tamaño de DataFrame:
(Esta función solo convierte DataFrame a RDD internamente)
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)
A continuación se muestra una manera aparte de SizeEstimator
.Uso con frecuencia
¿Saber a partir del código sobre un RDD si está en caché y, más precisamente, cuántas de sus particiones están en caché en la memoria y cuántas en el disco? para obtener el nivel de almacenamiento, también desea conocer el estado de almacenamiento en caché real actual. Para conocer el consumo de memoria.
Spark Context tiene el método de API de desarrollador getRDDStorageInfo() Ocasionalmente puede usar esto.
Devuelve información sobre qué RDD se almacenan en caché, si están en memoria o en disco, cuánto espacio ocupan, etc.
Por ejemplo :
scala> sc.getRDDStorageInfo res3: Array[org.apache.spark.storage.RDDInfo] = Array(RDD "HiveTableScan [name#0], (MetastoreRelation sparkdb, firsttable, None), None " (3) StorageLevel: StorageLevel(false, true, false, true, 1); CachedPartitions: 1;
Total de particiones: 1;
Tamaño de la memoria: 256,0 B; ExternalBlockStoreSize: 0.0 B; Tamaño de disco: 0.0 B)
Parece que spark ui también usó lo mismo de este código
- Consulte este problema de origen SPARK-17019 que describe…
Descripción
Con SPARK-13992, Spark admite datos persistentes en la memoria fuera del montón, pero el uso de fuera del montón no está expuesto actualmente, no es tan conveniente para el usuario monitorear y perfilar, por lo que aquí se propone exponer también la memoria fuera del montón. como uso de memoria en montón en varios lugares:
- La página del ejecutor de Spark UI mostrará el uso de memoria tanto dentro como fuera del montón.
- La solicitud REST devuelve tanto la memoria en el montón como fuera del montón.
- Además, estos dos usos de memoria se pueden obtener mediante programación desde SparkListener.
Recuerda algo, que tienes permiso de explicar si diste con el resultado.