13

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

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

我在这里错过了什么吗?任何指针都会有所帮助。谢谢!

4

6 回答 6

18

尝试将“位置”放在“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

于 2015-06-22T23:54:25.143 回答
3

@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 创建表

于 2018-03-15T15:25:57.630 回答
0

检查这篇文章:

将 .txt 文件中的数据加载到 Hive 中存储为 ORC 的表中

并检查指定目录中存在的源文件/user/hive/test_table。如果文件是.txt或其他non ORC格式,那么您可以按照上面帖子中的步骤来摆脱错误。

于 2014-03-18T07:25:53.023 回答
0

如果您在使用命令“hive -f file.hql”从文件运行 HiveQL 时看到此错误。并且它最明确地指向查询的第一行,这是因为之前的查询忘记了分号(;)。由于解析器寻找分号(;)作为每个查询的终止符。例如:

DROP TABLE IF EXISTS default.emp create table default.emp ( field1 type, field2 type) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' 存储为文本文件位置 's3://gts-promocube/source-data/Lowes/POS/';

如果您将上述内容保存在一个文件中并使用 hive -f 执行它,那么您将收到错误:FAILED: ParseException line 2:0 missing EOF at 'CREATE' near emp.

解决方案:为上面的 DROP TABLE 命令添加一个分号 (;)。

于 2019-03-08T00:34:05.160 回答
0

ParseException 行 lineNumber 在 '.' 处缺少 EOF 'schemaName' 附近:

尝试从 linux 脚本执行以下命令以截断配置单元表时出现上述错误

dse -u 用户名 -p 密码 hive -e "truncate table keyspace.tablename;"

修复: 需要将脚本行中的命令分开如下 -

dse -u 用户名 -p 密码 hive -e "使用密钥空间;截断表 keyspace.tablename;"

快乐编码!

于 2016-06-03T06:00:19.910 回答
0

在 hive 中创建表时遇到相同的错误。

我使用 drop 命令删除了表,然后再次运行了 create table 命令。

为我工作。

于 2017-03-22T14:22:25.710 回答