Apache spark spark中大数据集上的多个度量
我有一个按特定字段分组的大数据集,需要对每个字段进行描述性统计。 假设数据集有2亿条以上的记录,我需要运行大约15个stat函数-sum/avg/min/max/stddev等。问题是,由于没有明确的方法来划分数据集,所以很难扩展该任务 示例数据集:Apache spark spark中大数据集上的多个度量,apache-spark,hadoop,pyspark,Apache Spark,Hadoop,Pyspark,我有一个按特定字段分组的大数据集,需要对每个字段进行描述性统计。 假设数据集有2亿条以上的记录,我需要运行大约15个stat函数-sum/avg/min/max/stddev等。问题是,由于没有明确的方法来划分数据集,所以很难扩展该任务 示例数据集: +------------+----------+-------+-----------+------------+ | Department | PartName | Price | UnitsSold | PartNumber | +-----
+------------+----------+-------+-----------+------------+
| Department | PartName | Price | UnitsSold | PartNumber |
+------------+----------+-------+-----------+------------+
| Texas | Gadget1 | 5 | 100 | 5943 |
| Florida | Gadget3 | 484 | 2400 | 4233 |
| Alaska | Gadget34 | 44 | 200 | 4235 |
+------------+----------+-------+-----------+------------+
现在我正在这样做(示例):
这里的问题是,函数列表比适用于每个列的函数列表大(大约有16-20个),但集群将大部分时间花在洗牌上,CPU负载约为5-10%
我应该如何划分这些数据,或者我的方法可能不正确
如果各部门存在偏差(即德克萨斯州占90%的业务量),我的方法应该是什么
这是我这份工作的spark dag:
columns_to_profile = ['Price', 'UnitSold', 'PartNumber']
functions = [
Function(F.mean, 'mean'),
Function(F.min, 'min_value'),
Function(F.max, 'max_value'),
Function(F.variance, 'variance'),
Function(F.kurtosis, 'kurtosis'),
Function(F.stddev, 'std'),
Function(F.skewness, 'skewness'),
Function(count_zeros, 'n_zeros'),
Function(F.sum, 'sum'),
Function(num_hist, "hist_data"),
]
functions_to_apply = [f.function(c).alias(f'{c}${f.alias}')
for c in columns_to_profile for f in get_functions(column_types, c)]
df.groupby('Department').agg(*functions_to_apply).toPandas()