按分区大小估算 Spark DataSet - 未压缩
Estimate Spark DataSet by partition size - uncompressed
在我的应用程序中,我有一个包含 X 行的 spark 数据集
我有不同的 CSV 文件,每个文件的大小和结构都不同。
我正在通过此 CSV 生成数据集。
在发布这个问题之前,我看到了这些问题:
- how can you calculate the size of an apache spark data frame using pyspark?
我需要在运行时间内计算每个分区的大小
文件的结果是 ORC(snappy compression)
以上所有问题都可以使用 Size Estimator
所以我也读到了 Size Estimator
当我尝试使用
的尺寸估算器时
SizeEstimator.estimate(dataFrame.rdd().partitions())
我得到了这个结果:71.124 MB,我也尝试使用 estimate
的样本读取部分文件 - 结果大小相同。
看到这个结果 - 只是没有意义,这里有一些更多的细节:
Source file size 44.8 KB (CSV) - 300 rows.
SizeEstimator.estimate(dataSet.rdd().partitions()) 71.124 MB
运行时间的实际数据帧结果存储到S3:
dataSet.write().partitionBy(partitionColumn).option("header", "true").mode(SaveMode.Append).format("snappy").save(pathTowrite);
- 我想知道没有的dataFrame文件的实际大小
压缩
- 保存后我不想从 S3 读取文件:
它是压缩的 - 而不是实际大小。
不是最好的资源规划。
为什么SizeEstimator和文件的实际大小相差这么大,有道理吗?
是否有其他有效的方法在保存之前估计每个分区数据大小(未压缩)?
我的整个代码都在 Java- 所以 java 解决方案是首选。
目前,我可以使用效率不高但非常接近我需要的临时解决方案
在我的应用程序中,我有一个包含 X 行的 spark 数据集 我有不同的 CSV 文件,每个文件的大小和结构都不同。 我正在通过此 CSV 生成数据集。
在发布这个问题之前,我看到了这些问题:
- how can you calculate the size of an apache spark data frame using pyspark?
我需要在运行时间内计算每个分区的大小 文件的结果是 ORC(snappy compression)
以上所有问题都可以使用 Size Estimator
所以我也读到了 Size Estimator
当我尝试使用
的尺寸估算器时SizeEstimator.estimate(dataFrame.rdd().partitions())
我得到了这个结果:71.124 MB,我也尝试使用 estimate
的样本读取部分文件 - 结果大小相同。
看到这个结果 - 只是没有意义,这里有一些更多的细节:
Source file size 44.8 KB (CSV) - 300 rows.
SizeEstimator.estimate(dataSet.rdd().partitions()) 71.124 MB
运行时间的实际数据帧结果存储到S3:
dataSet.write().partitionBy(partitionColumn).option("header", "true").mode(SaveMode.Append).format("snappy").save(pathTowrite);
- 我想知道没有的dataFrame文件的实际大小 压缩
- 保存后我不想从 S3 读取文件:
它是压缩的 - 而不是实际大小。 不是最好的资源规划。
为什么SizeEstimator和文件的实际大小相差这么大,有道理吗?
是否有其他有效的方法在保存之前估计每个分区数据大小(未压缩)?
我的整个代码都在 Java- 所以 java 解决方案是首选。
目前,我可以使用效率不高但非常接近我需要的临时解决方案