Hive错误:parseexception缺少EOF

时间:2014-03-17 19:21:06

标签: hadoop hive hiveql hcatalog

我不确定我在这里做错了什么:

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

我在这里遗漏了什么。任何指针都会有所帮助。谢谢!

6 个答案:

答案 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)

@Haiying Wang指出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)

参考:Hive Create Table

答案 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命令中放置一个分号(;)。