to_json无法在spark中使用selectExpr

时间:2017-06-22 10:02:11

标签: sql apache-spark

我正在阅读数据库博客link 我发现内置函数 col3 10 20 30 有问题。 在本教程中引用的代码中,它返回错误:

  

org.apache.spark.sql.AnalysisException:未定义的函数:'to_json'。此函数既不是已注册的临时函数,也不是在数据库'default'中注册的永久函数。

这是否意味着本教程中的这种用法是错误的?并且 col1 col2 col3 1 20 10 34 78 20 67 89 30 中没有可以使用udf。我可以将此to_json函数注册到默认数据库吗?

selectExpr

2 个答案:

答案 0 :(得分:1)

您需要将to_json函数强制为

import org.apache.spark.sql.functions.to_json

这应该起作用而不是selectExpr

data.withColumn("key", $"dcId".cast("string"))
  .select(to_json(struct(data.columns.head, data.columns.tail:_*)).as("value")).show()

您还必须使用 spark 2.x

我希望这有助于解决您的问题。

答案 1 :(得分:0)

基于我从邮件列表中获取的信息。此函数不会从spark 2.2.0添加到SQL中。这是提交链接:commit。 希望这会有所帮助。 THX Hyukjin Kwon和Burak Yavuz。