python - 如何用 Spark python 对 CSV 文件列求和
问题描述
我是 spark 的新手,我有一些数据要处理,我想对 CSV 文件中列的总和,文件的标题:([colmun1],[colmun2],[colmun3]),我要计算的是column3根据column1的总和,(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")
提前谢谢你(对不起我的英语)
解决方案
请尝试以下步骤以达到预期的效果。
将 CSV 文件读取为 Dataframe。
df = spark.read.csv("path_to_csv_file", header=True, inferSchema=True)
根据第 1 列按数据分组。
group_df = df.groupBy("Column_1")
对分组数据求第三列的总和
result_df = group_df.agg(sum("column_3").alias("SUM"))
显示数据 result_df.show()
希望能帮助到你。
注意:有关 CSV 函数的更多信息,请参阅下面的链接。 https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.DataFrameReader.csv
问候,
尼拉吉
推荐阅读
- java - 我应该如何重写此代码以使用访问令牌连接到 Netsuite?
- javascript - 分页显示 5 页并隐藏其余页面
- c++ - 为什么 std::filesystem::path::root_name() 返回空字符串?
- xamarin - Xamarin.Android 中的错误:“Emgu.CV.CvInvoke”的类型初始化程序引发异常
- python - 无法在 python 3.8 上将带有 webapp 的 python 部署到天蓝色
- ios - Xcode中UICollectionsView的单元格没有出现
- python - Python:在处理文件之前检查文件是否可以读取
- c# - 安装 WinForms 后是否可以自动更新 Nuget 包?
- javascript - 打字稿对象作为函数参数
- html - 我应该如何在 app.module.ts 中导入 MatDrawer 和 MatDrawerContainer?角度 9