3

我正在尝试在 Hive 中创建一个外部表,但不断收到以下错误:

create external table foobar (a STRING, b STRING) row format delimited fields terminated by "\t" stored as textfile location "/tmp/hive_test_1375711405.45852.txt";
Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask (state=08S01,code=1)
Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask (state=08S01,code=1)
Aborting command set because "force" is false and command failed: "create external table foobar (a STRING, b STRING) row format delimited fields terminated by "\t" stored as textfile location "/tmp/hive_test_1375711405.45852.txt";"

的内容/tmp/hive_test_1375711405.45852.txt是:

abc\tdef

我通过beeline使用 Thrift 的命令行界面进行连接HiveServer2

系统:

  • Hadoop 2.0.0-cdh4.3.0
  • 蜂巢 0.10.0-cdh4.3.0
  • 直线 0.10.0-cdh4.3.0
  • 客户端操作系统 - Red Hat Enterprise Linux Server 6.4 版(圣地亚哥)
4

2 回答 2

3

问题是我将外部表指向 HDFS 中的文件而不是目录。神秘的 Hive 错误消息真的让我大吃一惊。

解决方案是创建一个目录并将数据文件放在那里。要为上面的示例解决此问题,您将在其下创建一个目录/tmp/foobar并将其放置hive_test_1375711405.45852.txt在其中。然后像这样创建表:

create external table foobar (a STRING, b STRING) row format delimited fields terminated by "\t" stored as textfile location "/tmp/foobar";
于 2013-08-06T01:25:44.420 回答
-1

我们公司也面临类似的问题(Sentry、hive 和 kerberos 组合)。我们通过从非完全定义中删除所有权限来解决它hdfs_url。例如,我们更改GRANT ALL ON URI '/user/test' TO ROLE test;GRANT ALL ON URI 'hdfs-ha-name:///user/test' TO ROLE test;.

您可以在 Hive 数据库(本例中为 mysql)中找到特定 URI 的权限。

于 2019-12-17T21:54:01.517 回答