java - 如何在 Java 中使用 SQL(可能使用 LATERAL VIEW)在 JSON 中使用 "expand"多值字段?

标签 java apache-spark-sql

我正在尝试转换我的 JSON 输入

col1 | col2
row1   [value1, value2]
row2   [value3, value2]

col1 | col2
row1   value1
row1   value2
row2   value3
row2   value2

显然 LATERAL VIEW 是要走的路,但我似乎做对了。

我一直在尝试以下方法:

df= sqlContext.sql(
        "SELECT col1, col2" +
        "FROM temptable LATERAL VIEW col2 AS col2"
);

(注意:变量sqlContext实际上是一个HiveContext。)

但这给了我 org.apache.spark.sql.AnalysisException: missing EOF at 'LATERAL' near 'temptable';。文件结尾是什么意思?

我如何在 JAVA 中实现这一点?

最佳答案

您在查询中忘记了 col2 和 FROM 之间的空格。按照你写的方式,查询是 SELECT col1, col2FROM temptable LATERAL VIEW col2 AS col2 但你应该写

df= sqlContext.sql(
    "SELECT col1, col2 FROM temptable LATERAL VIEW col2 AS col2"
);

关于java - 如何在 Java 中使用 SQL(可能使用 LATERAL VIEW)在 JSON 中使用 "expand"多值字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38785810/

相关文章:

Java-Spark : Unable to read property file in cluster mode

scala - 与take(10)和limit(10).collect()的性能比较

java - 将评级值设置为文本框

java - 什么是 org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER 以及如何使它在 IntelliJ 中工作?

java - 使用 Jackson 转换为 JSON 时处理空 XML 节点

java - httpd error_log 正在记录在 https 上运行 Web 应用程序的错误

java - 将用户输入保存到数组中并确保它不违反索引

json - 合并不区分大小写的 json 列名称

oracle - Spark - Oracle 时区错误

scala - 为 Scala 2.11 编译 Spark