如何使用spark-sql

时间:2017-01-05 10:47:56

标签: sql apache-spark-sql

我有以下格式的数据:

df
uid String event
a   djsan  C
a   fbja   V
a   kakal  Conversion
b   jshaj  V
b   jjsop  C
c   dqjka  V
c   kjkk   Conversion

我需要提取其事件为转换的用户的所有行,因此预期结果应为:

uid String event
a   djsan  C
a   fbja   V
a   kakal  Conversion
c   dqjka  V
c   kjkk   Conversion

我正在尝试使用spark-sql。我试图使用形式

的简单子查询
Select * from df where uid in (Select uid from df where event = 'Conversion')

但这给了我一个例外。

此外,我想看看我是否有一个uid的列表对象,我可以在SQL语句中使用它,如果是,如何使用?

list : List[String] = List('a','c')

1 个答案:

答案 0 :(得分:2)

你还没有支持你所写的子查询语法。以下是使用列表构建查询的方法:

val list = List("a","b")
val query = s"select * from df where uid in (${list.map ( x => "'" + x + "'").mkString(",") })"

并使用它来选择所需的行。