首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在zeppelin中将sql查询转换为spark lang

在zeppelin中将sql查询转换为spark lang
EN

Stack Overflow用户
提问于 2019-10-17 11:17:20
回答 1查看 58关注 0票数 2

我尝试将sql查询转换为spark lang。下面是sql查询:

代码语言:javascript
复制
%sql
select ${checkbox:fields=AGE|NAME|SEX} from table limit ${limit=10}

然后我转移spark lang:

代码语言:javascript
复制
%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()

但它不起作用。如何收集?

EN

回答 1

Stack Overflow用户

发布于 2019-10-17 15:22:09

这里有几个您遗漏的东西。

在scala/中使用select时,在sql中使用

  • 复选框。在复选框中,您可以选择多个值,而在选择中,您只能选择一个值。在接下来的回答中,我假设你想做多项选择。
  • 在scala中试试这个:

代码语言:javascript
复制
 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需要不同类型的输入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58424389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档