使用交互模式从s3中的制表符分隔文件创建配置单元表

Glu*_*luz 6 hive amazon-s3 amazon-web-services elastic-map-reduce

我已经将制表符分隔文件加载到S3中,在这个文件夹下有这种类型的文件夹:bucket - > se - > y = 2013 - > m = 07 - > d = 14 - > h = 00

每个子文件夹都有1个文件,代表我的流量小时.

然后,我创建了一个EMR工作流,以便在hive的交互模式下运行.

当我登录到主服务器并进入配置单元时,我运行此命令:

CREATE EXTERNAL TABLE se (
id bigint,
oc_date timestamp)
partitioned by (y string, m string, d string, h string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION 's3://bi_data';
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

FAILED:元数据错误:java.lang.IllegalArgumentException:列出存储桶中的对象时必须指定存储桶名称参数

FAILED:执行错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回代码1

有人可以帮忙吗?

更新 即使我尝试只使用字符串字段,我也会得到同样的错误.使用字符串创建表:

CREATE EXTERNAL TABLE se (
id string,
oc_date string)
partitioned by (y string, m string, d string, h string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION 's3://bi_data';
Run Code Online (Sandbox Code Playgroud)

Hive版本0.8.1.8

Glu*_*luz 13

所以,解决方案是我有两个错误:

  1. 仅写入存储桶名称时,S3路径中应该有一个尾部斜杠.这里参考

  2. 下划线也是一个问题,存储桶名称应符合DNS.

希望我帮助过这个人.