Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark spark中大数据集上的多个度量_Apache Spark_Hadoop_Pyspark - Fatal编程技术网

Apache spark spark中大数据集上的多个度量

Apache spark spark中大数据集上的多个度量,apache-spark,hadoop,pyspark,Apache Spark,Hadoop,Pyspark,我有一个按特定字段分组的大数据集,需要对每个字段进行描述性统计。 假设数据集有2亿条以上的记录,我需要运行大约15个stat函数-sum/avg/min/max/stddev等。问题是,由于没有明确的方法来划分数据集,所以很难扩展该任务 示例数据集: +------------+----------+-------+-----------+------------+ | Department | PartName | Price | UnitsSold | PartNumber | +-----

我有一个按特定字段分组的大数据集,需要对每个字段进行描述性统计。 假设数据集有2亿条以上的记录,我需要运行大约15个stat函数-sum/avg/min/max/stddev等。问题是,由于没有明确的方法来划分数据集,所以很难扩展该任务

示例数据集:

+------------+----------+-------+-----------+------------+
| 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()