0
我想要計算類似於下面的SQL查詢在分組字段的平均值AVG:星火org.apache.spark.sql.DataFrame:如何計算的第2列
select count(*) as total_count
from tbl1
where col2 is NULL;
select col3, count(*)/total_count as avg_count
from tbl1
where col2 is NULL
group by col3;
請找星火我經歷的陳述。我已經有了total_count
。
val df = sqlContext.read.parquet("/user/hive/warehouse/xxx.db/fff")
val badDF = df.filter("col2 = ' '").withColumn("INVALID_COL_NAME", lit("XXX"))
val badGrp1 = df.groupBy("col3").count()
val badGrp2 = badGrp1.select(col("col3"),col("count").as("CNT"))
現在能找到avg CNT/total_count
,該怎麼做?
我試過地圖和行,它沒有工作。
val badGrp3 = badGrp2.map(row => Row(row._1, row._2/20)) ---> for now I am assuming 20 as total_count.
有人能請建議如何繼續?
謝謝。
謝謝袁基。 – Aavik
你的回答對我有幫助,我會投票。 問題:Row函數屬於哪個包?它給我錯誤:找不到:值行。我編碼如下: val badGrp3 = badGrp1.map(row => Row(row.get(0),row.getLong(1)/ 20) 此外,如果我必須遍歷所有的Dataframe行,如何做到這一點? 我想調用DF的每一行的方法。 – Aavik
它是'org.apache.spark.sql.Row'你可以看到[here](http://spark.apache.org/docs /1.6.0/api/scala/index.html#org.apache.spark.sql.Row) –