我是使用python的新手,我尝试做一些基本的东西来理解python和spark。
我有一个如下文件 -
empid||deptid||salary
1||10||500
2||10||200
3||20||300
4||20||400
5||20||100
我想写一个小的python spark来读取每个部门的员工数量。
我一直在使用数据库,这在sql中非常简单,但我尝试使用python spark来做这件事。我没有代码可以分享,因为我对python和spark完全陌生,但想通过一个简单的动手实例了解它是如何工作的
我已安装pyspark并在此处快速阅读https://spark.apache.org/docs/latest/quick-start.html
形成我的理解,有一些数据框可以执行sql,如group by,但不知道如何编写正确的代码
答案 0 :(得分:2)
您可以使用以下方法将文本文件作为数据框读取:
df = spark.createDataFrame(
sc.textFile("path/to/my/file").map(lambda l: l.split(',')),
["empid","deptid","salary"]
)
textFile
将数据样本加载为只有一列的RDD
。然后我们将每一行拆分为map
并将其转换为数据帧。
从python列表列表开始:
df = spark.createDataFrame(
sc.parallelize([[1,10,500],
[2,10,200],
[3,20,300],
[4,20,400],
[5,20,100]]),
["empid","deptid","salary"]
)
df.show()
+-----+------+------+
|empid|deptid|salary|
+-----+------+------+
| 1| 10| 500|
| 2| 10| 200|
| 3| 20| 300|
| 4| 20| 400|
| 5| 20| 100|
+-----+------+------+
现在按部门计算员工人数,我们将使用groupBy
,然后使用count
汇总功能:
df_agg = df.groupBy(" deptid")。count()。show()
+------+-----+
|deptid|count|
+------+-----+
| 10| 2|
| 20| 3|
+------+-----+
最多:
import pyspark.sql.functions as psf
df_agg.agg(psf.max("count")).show()