sql - 失败:ParseException line 1:24 无法识别表名中“USING”“org”附近的输入(USING org.apache.spark.sql.json)
问题描述
我想使用以下查询,但出现错误。正如我在这里读到的https://databricks.com/blog/2015/02/02/an-introduction-to-json-support-in-spark-sql.html查询应该是正确的。
CREATE TABLE spark_logs USING org.apache.spark.sql.json OPTIONS (path "/data/web_logs/clicks.json");
NoViableAltException(275@[184:1: tableName : (db= identifier DOT tab=
identifier -> ^( TOK_TABNAME $db $tab) |tab= identifier -> ^(
TOK_TABNAME $tab) );])
at org.antlr.runtime.DFA.noViableAlt(DFA.java:158)
at org.antlr.runtime.DFA.predict(DFA.java:116)
at org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.tableName(HiveParser_FromClauseParser.java:4692)
at org.apache.hadoop.hive.ql.parse.HiveParser.tableName(HiveParser.java:44923)
at org.apache.hadoop.hive.ql.parse.HiveParser.createTableStatement(HiveParser.java:4873)
at org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:2557)
at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1589)
at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1065)
at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:201)
at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:522)
at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1356)
at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1473)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1285)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1275)
at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:226)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:175)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:389)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:781)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:699)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:634)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
FAILED: ParseException line 1:24 cannot recognize input near
'spark_logs' 'USING' 'org' in table name
你知道为什么蜂巢无法识别USING org.apache.spark.sql.json
吗?
解决方案
您需要查阅新的文档(Databricks),而不是大约 5 年前写的东西 :-) 语法如下:
CREATE TABLE table_name
USING JSON
LOCATION 'path....';
更新:看起来在 1.6.x 中,唯一支持的语法如博客文章中所述(临时表,但不是 Hive 表):
CREATE TEMPORARY TABLE people
USING org.apache.spark.sql.json
OPTIONS (path '[the path to the JSON dataset]')
推荐阅读
- android - “公共构造函数 string() 定义的参数太多” Kotlin 问题
- swift - Swift - 根据其内容自动布局 UILabel 高度
- django - 在创建新的 Django 项目时如何解决此错误?
- sql-server - 在 SQL Server 中创建外键时出错,但在 Access 2013 中的本地数据库中没有
- javascript - 16:9 格式,可调整大小
- typescript - 在 VSCode 中,右键单击并选择“Run Jest”返回错误“系统找不到指定的路径”。
- reactjs - 反应 IDE 安装
- python - 使用 python tkinter 出现错误: int() 以 10 为基数的无效文字:''
- c - 使用 union 在 C 中键入双关语
- flutter - 键盘隐藏的TextFormField - Flutter