在AWS EMR上创建Hive外部表

时间:2017-03-24 13:18:20

标签: amazon-s3 hive amazon-emr

我正试图通过hive上的hueAWS EMR创建外部表格

CREATE EXTERNAL TABLE IF NOT EXISTS urls (
  id STRING,
  `date` TIMESTAMP,
  url STRING,
  expandedUrl STRING,
  domain STRING
) 
PARTITIONED BY (`year` INT, `month` INT, `day` INT)
STORED AS PARQUET LOCATION 's3://data/processed/urls/'
  • 我使用AWS控制台创建了EMR群集(emr-5.4.0)。
  • 登录Hue
  • 运行上述SQL

在Metastore Manager中,我收到以下错误:

  

无法访问:s3:// data / processed / urls /。注意:   你是Hue管理员但不是HDFS超级用户," hdfs"或HDFS的一部分   超群," hadoop"。

     

[Errno 22]未知方案s3,可用方案:[' hdfs']

我也无法在文件管理器下看到s3。 我可以使用CLI工具从主节点访问s3。

群集创建中是否缺少任何配置选项? 我是否需要为Hue用户授予其他权限?

更新

我已经尝试过创建一个hdfs用户和一个新数据库,正如franklinsijo建议的那样。

我现在在数据库上遇到同样的错误:

  

无法访问:s3://数据/已处理。

     

[Errno 22]未知方案s3,可用方案:[' hdfs']

当"创建数据库" SQL是从我获得的配置单元CLI运行"访问被拒绝" 我使用的EMR_DefaultRole同时包含AmazonElasticMapReduceRoleAmazonS3FullAccess

更新2

我在franklinsijo的帮助下完成了这个问题

  • 我可以在hive clihue上创建s3上的数据库和表格。
  • 我可以从表中读取和写入数据
  • 无法详见[{3}}
  • 中的S3 Browser
  • 无法通过' Metastore Manager - >访问该表格。数据库 - >表 - > STATS - >位置&#39 ;.我还是[Errno 22]

1 个答案:

答案 0 :(得分:1)

  

[Errno 22]未知方案s3,可用方案:['hdfs']

这是因为Hive的default数据库位置设置为HDFS(请参阅here)。使用S3位置创建一个新的Hive数据库。

CREATE DATABASE database_name LOCATION 'S3://Bucket/Key';

然后在这个新创建的数据库中创建表。

  

无法访问:s3:// data / processed / urls /。注意:您是Hue管理员   但不是HDFS超级用户,“hdfs”或HDFS超级组的一部分,“hadoop”。

在Hue UI中创建一个名为hdfs的具有超级用户状态的新Hue用户。以hdfs用户身份登录以执行查询。