2016-07-15 14 views
3

私は、JavaでSparkにgroupByを書き込もうとしています。 SQLではこれはSpark(JAVA) - 複数の集計を持つデータフレームgroupBy?

SELECT id, count(id) as count, max(date) maxdate 
FROM table 
GROUP BY id; 

のように見えますが、このクエリと同等のSpark/JAVAスタイルは何ですか?変数tableがSQLフレームとの関係を見るためのデータフレームであるとします。あなたが列のみデータフレームに.countまたは.maxなどの集計関数を使用することができないので、明らかに間違っている

table = table.select(table.col("id"), (table.col("id").count()).as("count"), (table.col("date").max()).as("maxdate")).groupby("id") 

:私のようなものを考えています。では、これはSpark JAVAでどのように行われますか?

ありがとうございました!

答えて

8

あなたはorg.apache.spark.sql.functionsでこれを行うことができます:

import org.apache.spark.sql.functions; 

table.groupBy("id").agg(
    functions.count("id").as("count"), 
    functions.max("date").as("maxdate") 
).show(); 
関連する問題