【问题标题】:sql query translate to spark lang in zeppelinsql 查询在 zeppelin 中转换为 spark lang
【发布时间】:2020-02-13 21:19:52
【问题描述】:

我尝试将 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()

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

【问题讨论】:

  • 欢迎来到 SO。你尝试了什么?你研究了什么?你的帖子很清楚,但它并没有显示你的工作太多(只是一次试验)。

标签: sql scala apache-spark apache-zeppelin


【解决方案1】:

您在这里错过了几件事。

  • 在 sql 中您使用的是复选框,而在 scala/spark 中您使用的是 select。在复选框中,您可以选择多个值,而在选择中您只能选择 1 个值。在其余答案中,我假设您要进行多项选择。

  • 在 scala 中试试这个:

 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需要不同类型的输入。

【讨论】:

    猜你喜欢
    • 2018-10-28
    • 2017-04-17
    • 2017-01-14
    • 2017-11-21
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    相关资源
    最近更新 更多