我不确定我在这里做错了什么:
hive> CREATE TABLE default.testtbl(int1 INT,string1 STRING)
stored as orc
tblproperties ("orc.compress"="NONE")
LOCATION "/user/hive/test_table";
FAILED: ParseException line 1:107 missing EOF at 'LOCATION' near ')'
虽然以下查询完全正常:
hive> CREATE TABLE default.testtbl(int1 INT,string1 STRING)
stored as orc
tblproperties ("orc.compress"="NONE");
OK
Time taken: 0.106 seconds
我在这里遗漏了什么。任何指针都会有所帮助。谢谢!
答案 0 :(得分:12)
尝试将“LOCATION”放在“tblproperties”前面,如下所示,为我工作。
CREATE TABLE default.testtbl(int1 INT,string1 STRING)
stored as orc
LOCATION "/user/hive/test_table"
tblproperties ("orc.compress"="NONE");
似乎即使是“Programming Hive”一书中的示例SQL也导致订单错误。请参考create table命令的官方定义:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-CreateTable
答案 1 :(得分:1)
LOCATION
将放在tblproperties
之前。
但我认为在location
以上指定stored as
时也会出现错误。
最好坚持正确的顺序:
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name -- (Note: TEMPORARY available in Hive 0.14.0 and later)
[(col_name data_type [COMMENT col_comment], ... [constraint_specification])]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
[SKEWED BY (col_name, col_name, ...) -- (Note: Available in Hive 0.10.0 and later)]
ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
[STORED AS DIRECTORIES]
[
[ROW FORMAT row_format]
[STORED AS file_format]
| STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)] -- (Note: Available in Hive 0.6.0 and later)
]
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, ...)] -- (Note: Available in Hive 0.6.0 and later)
[AS select_statement]; -- (Note: Available in Hive 0.5.0 and later; not supported for external tables)
答案 2 :(得分:0)
查看这篇文章:
Loading Data from a .txt file to Table Stored as ORC in Hive
检查指定目录/user/hive/test_table
中的源文件。如果文件包含.txt
或其他non ORC
格式,则您可以按照上述帖子中的步骤退出错误。
答案 3 :(得分:0)
ParseException line lineNumber在'。'处缺少EOF 'schemaName'附近:
尝试从linux脚本执行以下命令以截断配置表
时出现上述错误dse -u username -p password hive -e“truncate table keyspace.tablename;”
<强>修正:强> 需要在脚本行中分隔命令,如下所示 -
dse -u username -p password hive -e“use keyspace; truncate table keyspace.tablename;”
快乐的编码!
答案 4 :(得分:0)
在配置单元中创建表时遇到同样的错误。
我使用drop命令删除表,然后运行我再次创建的create table命令。
为我工作。
答案 5 :(得分:0)
如果使用命令“ hive -f file.hql”从文件运行HiveQL时看到此错误。而且它最明确地指向了查询的第一行,这是因为上一个查询遗忘了分号(;)。 由于解析器会寻找分号(;)作为每个查询的终止符。 例如:
如果存在表DROP.default.emp 创建表default.emp( field1类型, field2类型) 行格式由'|'终止的字段 存储为文本文件 位置's3:// gts-promocube / source-data / Lowes / POS /';
如果将以上内容保存在文件中并使用hive -f执行,则会出现错误: 失败:ParseException行2:0在emp附近的“ CREATE”缺少EOF。
解决方案:在上面的DROP TABLE命令中放置一个分号(;)。