2017-09-21 4 views
1

私はpythonを使用して新しい機能を追加しました。pythonを使用してカウントを取得するためのデータの読み込みとグループ化

私は以下のようなファイルがある -

empid||deptid||salary 
1||10||500 
2||10||200 
3||20||300 
4||20||400 
5||20||100 

私は各部門での印刷に従業員の数を読み取るために、小さなPythonの火花を書きたいし。

私はデータベースで作業していますが、これはSQLでは非常に簡単ですが、私はこれをpython sparkを使って実行しようとしています。私は完全にPythonとスパークに新しいので、共有するコードはありませんが、単純な実践例を使ってどのように動作するのかを理解したかった

私はpysparkをインストールしました。

あなたが使用してデータフレームとしてテキストファイルを読み込むことができますが1がして、グループのようなSQLを実行することができますどのデータフレームがありますが、適切なコードを書く方法がわからない

答えて

2

私の理解フォーム:

df = spark.createDataFrame(
    sc.textFile("path/to/my/file").map(lambda l: l.split(',')), 
    ["empid","deptid","salary"] 
) 

textFileは、データサンプルを1列のみのRDDとしてロードします。次に、各行をmapに分割し、それをデータフレームに変換します。

リストのPythonのリスト最低料金:

df_agg = DF:

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

は今、私たちは count集計関数を使用し、その後 groupByを使用します部門で従業員の数をカウントします。 GROUPBY( "DEPTID"))(カウントショー()maxの

+------+-----+ 
    |deptid|count| 
    +------+-----+ 
    | 10| 2| 
    | 20| 3| 
    +------+-----+ 

:。。

import pyspark.sql.functions as psf 
df_agg.agg(psf.max("count")).show() 
+0

df.groupBy( "deptid")。count()。show() - >私にすべてのカウントを与えますが、カウントの最大値が必要な場合は? df.groupBy( "deptid")。count()。max()。show() - > does not work @Marie – Firstname

+0

私は、 – MaFF