相关疑难解决方法(0)

PySpark 2.0 DataFrame的大小或形状

我试图找出PySpark中DataFrame的大小/形状.我没有看到一个可以做到这一点的功能.

在Python中,我可以做到

data.shape()
Run Code Online (Sandbox Code Playgroud)

PySpark中是否有类似的功能.这是我目前的解决方案,但我正在寻找一个元素

row_number = data.count()
column_number = len(data.dtypes)
Run Code Online (Sandbox Code Playgroud)

列数的计算并不理想......

size shape dataframe pyspark

53
推荐指数
5
解决办法
8万
查看次数

如何估算pyspark中的数据帧实际大小?

如何确定数据框大小?

现在我估计数据帧的实际大小如下:

headers_size = key for key in df.first().asDict()
rows_size = df.map(lambda row: len(value for key, value in row.asDict()).sum()
total_size = headers_size + rows_size
Run Code Online (Sandbox Code Playgroud)

它太慢了,我正在寻找更好的方法.

python dataframe apache-spark spark-csv

13
推荐指数
2
解决办法
2万
查看次数

如何获取文件大小

我正在运行一个hadoop作业,我有FileSystem对象和Path对象,我想知道什么是文件(路径)大小.

任何的想法?

hadoop

11
推荐指数
1
解决办法
9879
查看次数

计算Spark数据帧的大小 - SizeEstimator会产生意外结果

我试图找到一种可靠的方法来以编程方式计算Spark数据帧的大小(以字节为单位).

原因是我希望有一种方法来计算"最佳"分区数量("最佳"可能意味着不同的东西:它可能意味着 具有最佳分区大小,或者写入Parquet时产生最佳文件大小表 - 但两者都可以假设为数据帧大小的某些线性函数.换句话说,我想调用coalesce(n)repartition(n)在数据帧上,其中n不是固定数字,而是数据帧大小的函数.

关于SO的其他主题建议使用SizeEstimator.estimatefrom org.apache.spark.util来获取数据帧的字节大小,但我得到的结果是不一致的.

首先,我将数据帧保存到内存中:

df.cache().count 
Run Code Online (Sandbox Code Playgroud)

Spark UI在"存储"选项卡中显示大小为4.8GB.然后,我运行以下命令来获取大小SizeEstimator:

import org.apache.spark.util.SizeEstimator
SizeEstimator.estimate(df)
Run Code Online (Sandbox Code Playgroud)

这给出了115'715'808字节= ~116MB的结果.但是,应用于SizeEstimator不同的对象会导致非常不同的结果.例如,我尝试分别为数据帧中的每一行计算大小并将它们相加:

df.map(row => SizeEstimator.estimate(row.asInstanceOf[ AnyRef ])).reduce(_+_)
Run Code Online (Sandbox Code Playgroud)

这导致12'084'698'256字节= ~12GB的大小.或者,我可以尝试应用于SizeEstimator每个分区:

df.mapPartitions(
    iterator => Seq(SizeEstimator.estimate(
        iterator.toList.map(row => row.asInstanceOf[ AnyRef ]))).toIterator
).reduce(_+_)
Run Code Online (Sandbox Code Playgroud)

这又导致10'792'965'376字节的不同大小=〜10.8GB.

我知道存在内存优化/内存开销,但在执行这些测试之后,我没有看到如何SizeEstimator使用它来获得足够好的数据帧大小估计(以及因此分区大小或结果Parquet文件大小).

SizeEstimator为了获得对数据帧大小或其分区的良好估计,应用适当的方法(如果有的话)是什么?如果没有,这里建议的方法是什么?

apache-spark spark-dataframe

10
推荐指数
3
解决办法
1万
查看次数

如何查找pyspark数据帧内存使用情况?

对于python数据框,info()函数提供内存使用情况。pyspark有任何等效功能吗?谢谢

python dataframe apache-spark pyspark

6
推荐指数
2
解决办法
3549
查看次数