如何使用spark python对CSV文件列求和

时间:2018-10-13 10:27:24

标签: python csv apache-spark pyspark

我是Spark的新手,我要处理一些数据,我想将CSV文件中一列的总和,文件的标题加起来:([[colmun1],[colmun2],[colmun3 ]), 我要计算的是根据 column1 column3 的总和,(column1代表日期,column2代表类别,column3出现以下类别之一该日期,所以我想计算每个日期的所有类别的总和),我已经尝试过此代码:

    from pyspark import SparkContext, SparkConf
    if __name__ == "__main__":
        conf = SparkConf().setAppName("sum").setMaster("local[3]")
        sc = SparkContext(conf = conf)
        line.split(",")).map(lambda line: (line[0:1]+line[3:4]))
        text_file = sc.textFile("in/fileinput.CSV")
        counts = text_file.flatMap(lambda line: line.split(",")) \
             .map(lambda line: (line[0:1],line[2:3])) \
             .reduceByKey(lambda a, b: a + b)
        counts.saveAsTextFile("out/fileoutput.txt")

先谢谢你 (对不起,我的英语)

1 个答案:

答案 0 :(得分:2)

请尝试以下步骤以达到所需的结果。

  1. 将CSV文件读取为数据框。

    df = spark.read.csv(“ path_to_csv_file”,header = True,inferSchema = True)

  2. 基于第1列的数据分组。

    group_df = df.groupBy(“ Column_1”)

  3. 对分组数据进行第三列求和

    result_df = group_df.agg(sum(“ column_3”)。alias(“ SUM”))

  4. 显示数据 result_df.show()

希望有帮助。

注意:有关CSV功能的更多信息,请参见下面的链接。 https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.DataFrameReader.csv

此致

Neeraj