使用python spark

时间:2017-09-21 14:46:19

标签: python pyspark

我是使用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,但不知道如何编写正确的代码

1 个答案:

答案 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()