是否可以通过ID查询spark sql?
理想情况下,我正在寻找的是类似的东西
val ids = ["123", "345", "456", "972"]
df.filter(df("id") in ids)
另一个想法是如果我甚至可以传入一个包含单列的数据帧。
val ids = df.map(r => r.getString(1))
dataDf.filter(dataDF("id" in ids)
答案 0 :(得分:3)
我不确定我是否正确理解了您的问题,但您可以使用isin根据值列表进行过滤。这是一个例子
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._
val df = sc.parallelize(Seq(1,2,3)).toDF("id")
df.show
+---+
| id|
+---+
| 1|
| 2|
| 3|
+---+
然后你可以使用你必须转换为vararg的List / Seq / Array进行过滤:
val ids = Array(1,2)
df.filter(df("id").isin(ids:_*)).show
+---+
| id|
+---+
| 1|
| 2|
+---+
或者你也可以直接写df.filter(df("id").isin(1,2))
答案 1 :(得分:0)
您可以通过...... df.filter($"id".isin( ids: _* ))
之类的方式来实现。有关更多信息,请查看org.apache.spark.sql.Column
类
isin()
文档