2017-06-21 84 views
2

我使用Spark 1.6.1和Java作爲編程語言。 下面的代碼是工作的罰款與dataframesspark數據集組和由總和

simpleProf.groupBy(col("col1"), col("col2")) 
       .agg(
        sum("CURRENT_MONTH"), 
        sum("PREVIOUS_MONTH") 
       ); 

但是,它不使用數據集,任何想法如何做同樣在Java數據集/火花?

乾杯

+0

你可以發佈你的代碼不工作嗎?這應該工作,所以這取決於你如何試圖做到這一點。 –

+0

在我的情況下,它也可以。你可以粘貼你的例外? –

+0

您能否詳細說明_「它不使用數據集」_?你怎麼知道它不能使用數據集?什麼是導致你相信的輸出? –

回答

-1

這應該工作你的情況。

simpleProf.groupBy(simpleProf.col("col1"), simpleProf.col("col2")) 
      .agg(
       sum(simpleProf.col("CURRENT_MONTH")), 
       sum(simpleProf.col("PREVIOUS_MONTH")) 
    ); 

或運行SQL查詢

simpleProf.registerTempTable("prof"); 
sqlContext.sql("SELECT sum(CURRENT_MONTH),sum(PREVIOUS_MONTH) FROM prof group by (CURRENT_MONTH, PREVIOUS_MONTH)) 
1

它不工作,在這個意義上,GROUPBY後,我收到了GroupedDataset對象,當我嘗試應用功能AGG它需要typedColumn而不是列。

啊,還有是因爲數據集和數據幀的星火2.X合併,那裏是一個groupBy與關係列作品,並groupByKey與類型化的列作品只是在這個有些混亂。因此,鑑於您在1.6中使用了明確的數據集,那麼解決方案是通過.as方法來表示您的列。

sum("CURRENT_MONTH").as[Int]