我尝试将sql查询转换为spark lang。下面是sql查询:
%sql
select ${checkbox:fields=AGE|NAME|SEX} from table limit ${limit=10}然后我转移spark lang:
%spark
var fields = z.select("fields", Seq(("AGE","AGE"),("NAME","NAME"),("SEX","SEX"))
val lim = z.input("limit","20")
df.selectExpr(fields).limit(lim).show()但它不起作用。如何收集?
发布于 2019-10-17 15:22:09
这里有几个您遗漏的东西。
在scala/中使用select时,在sql中使用
val f = z.checkbox("fields", options).to[collection.immutable.Seq]
val lim = z.input("limit","20").asInstanceOf[String].toInt
//Assuming df is already defined
df.selectExpr(f.map(c => (c+"")): _*).limit(lim).show()
df.select(f.map(c => col(c+"")): _*).limit(lim).show()z.input返回一个对象。spark DF中的limit将Int作为输入,因此我们将其转换为Int。z.checkbox返回scala.collection.Iterable,而selectExpr/select需要不同类型的输入。
https://stackoverflow.com/questions/58424389
复制相似问题