【发布时间】:2018-07-24 15:59:27
【问题描述】:
我遇到的一个问题是 Spark sql 聚合。我有一个数据框,我正在从中加载来自 apache phoenix 的记录。
val df = sqlContext.phoenixTableAsDataFrame(
Metadata.tables(A.Test), Seq("ID", "date", "col1", "col2","col3"),
predicate = Some("\"date\" = " + date), zkUrl = Some(zkURL))
在另一个数据框中,我需要根据 ID 和日期进行聚合,然后对 col1、col2、col3 求和,即
val df1 = df.groupBy($"ID", $"date").agg(
sum($"col1" + $"col2" + $"col3").alias("col4"))
但我在求和时得到了不正确的结果。我们如何对所有列(col1、col2、col3)求和并将其分配给 col4?
例子:
假设数据是这样的:
ID,date,col1,col2,col3
1,2017-01-01,5,10,12
2,2017-01-01,6,9,17
3,2017-01-01,2,3,7
4,2017-01-01,5,11,13
预期输出:
ID,date,col4
1,2017-01-01,27
2,2017-01-01,32
3,2017-01-01,12
4,2017-01-01,29
【问题讨论】:
-
你的输入和预期输出是什么?
-
我已经更新了帖子。请检查
-
你不能用`data.groupBy($"ID").agg( sum($"col1" + $"col2" + $"col3").alias(" col4")).show(false) `这有什么问题
-
这行得通吗?你得到了什么不正确的结果?
-
感谢 shankar 的回复,我认为问题出在我的工作数据集上。如果我发现它与帖子相关,我会尝试解决它并在此处更新。
标签: hadoop apache-spark hive apache-spark-sql phoenix