【问题标题】:Creating Hive external table on AWS EMR在 AWS EMR 上创建 Hive 外部表
【发布时间】:2017-08-17 10:53:28
【问题描述】:

我正在尝试在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 用户额外的权限吗?

更新

按照 franklinsijo 的建议,我已尝试创建一个 hdfs 用户和一个新数据库。

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

无法访问:s3://data/processed。

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

当从 hive CLI 运行“创建数据库”SQL 时,我得到“拒绝访问” 我正在使用EMR_DefaultRole,它同时具有AmazonElasticMapReduceRoleAmazonS3FullAccess

更新 2

我在 franklinsijo 的帮助下解决了这个问题

  • 我可以通过hive clihue 在s3 上创建数据库和表。
  • 我可以从表中读取和写入数据
  • 不能看到S3 Browser,详见http://gethue.com/introducing-s3-support-in-hue/
  • 无法通过“元存储管理器 -> 数据库 -> 表 -> 统计信息 -> 位置”访问该表。我仍然得到 [Errno 22]

【问题讨论】:

    标签: amazon-s3 hive amazon-emr


    【解决方案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 用户身份登录以执行查询。

    【讨论】:

    • 感谢您的帮助。我已经创建了“hdfs”用户并以它的身份登录。我还按照建议创建了数据库。但是问题是一样的,好像 hive/hue 不支持 s3
    • 错误现在在数据库(不是表)上:无法访问:s3://data/processed。 [Errno 22] 未知方案 s3,可用方案:['hdfs']
    • 您使用的是 emr 附带的 hue 不是吗?
    • 是的。我正在使用默认安装。 Hive 2.1.1、Pig 0.16.0、Hue 3.11.0
    • 奇怪!您可以尝试在 hive CLI 中使用 create database 查询吗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    相关资源
    最近更新 更多