【发布时间】:2014-12-07 23:46:00
【问题描述】:
我正在试验 Spark 和 Spark SQL,我需要在一个字符串字段的开头连接一个值,我从一个选择(使用连接)中检索该字段作为输出,如下所示:
val result = sim.as('s)
.join(
event.as('e),
Inner,
Option("s.codeA".attr === "e.codeA".attr))
.select("1"+"s.codeA".attr, "e.name".attr)
假设我的表格包含:
模拟:
codeA,codeB
0001,abcd
0002,efgh
事件:
codeA,name
0001,freddie
0002,mercury
我想作为输出:
10001,freddie
10002,mercury
在 SQL 或 HiveQL 中,我知道我有可用的 concat 函数,但 it seems Spark SQL 不支持此功能。有人可以建议我解决我的问题吗?
谢谢。
注意: 我正在使用语言集成查询,但在最终解决方案的情况下,我可以只使用“标准”Spark SQL 查询。
【问题讨论】:
-
我认为你不需要做很多工作,比如使用 map 和创建函数。只需使用这个 "val result = sim.as("s").join(events, sim(" codeA")===events("codeA"),"inner") .select("s.codeA","name").withColumn("codeA",concat(lit("1"),lit("" ),col("codeA"))).show "
标签: sql scala apache-spark apache-spark-sql