【问题标题】:Exporting Hive Table to a S3 bucket将 Hive 表导出到 S3 存储桶
【发布时间】:2012-03-18 08:53:12
【问题描述】:

我通过 Elastic MapReduce 交互式会话创建了一个 Hive 表,并从 CSV 文件中填充它,如下所示:

CREATE TABLE csvimport(id BIGINT, time STRING, log STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';

LOAD DATA LOCAL INPATH '/home/hadoop/file.csv' OVERWRITE INTO TABLE csvimport;

我现在想将 Hive 表存储在 S3 存储桶中,以便在我终止 MapReduce 实例后保留该表。

有人知道怎么做吗?

【问题讨论】:

    标签: amazon-s3 hive elastic-map-reduce emr


    【解决方案1】:

    是的,您必须在 hive 会话开始和结束时导出和导入数据

    为此,您需要创建一个映射到 S3 存储桶和目录的表

    CREATE TABLE csvexport (
      id BIGINT, time STRING, log STRING
      ) 
     row format delimited fields terminated by ',' 
     lines terminated by '\n' 
     STORED AS TEXTFILE
     LOCATION 's3n://bucket/directory/';
    

    将数据插入到s3表中,插入完成后目录会有一个csv文件

     INSERT OVERWRITE TABLE csvexport 
     select id, time, log
     from csvimport;
    

    您的表现在被保留,当您创建一个新的配置单元实例时,您可以重新导入您的数据

    您的表格可以以几种不同的格式存储,具体取决于您要在哪里使用。

    【讨论】:

    • 在 S3 中创建的文件没有标题和随机文件名。有没有办法解决这个问题?检查了SO上的一些帖子,找不到任何相关答案。
    • 与上述相同的评论 + 如何在其中填写 AWS 凭证?我的意思是 ID 和密钥。谢谢。
    【解决方案2】:

    以上查询需要使用EXTERNAL关键字,即:

    CREATE EXTERNAL TABLE csvexport ( id BIGINT, time STRING, log STRING ) 
    row format delimited fields terminated by ',' lines terminated by '\n' 
    STORED AS TEXTFILE LOCATION 's3n://bucket/directory/';
    INSERT OVERWRITE TABLE csvexport select id, time, log from csvimport;
    

    另一种选择是使用查询

    INSERT OVERWRITE DIRECTORY 's3n://bucket/directory/'  select id, time, log from csvimport;
    

    该表使用 HIVE 默认分隔符存储在 S3 目录中。

    【讨论】:

    • 这不会复制标题。有没有办法复制标题呢?
    • @MohammadAdnan 你找到复制标题的方法了吗?
    • @MohammadAdnan 你找到复制标题的方法了吗?
    【解决方案3】:

    如果您可以访问 aws 控制台并为您的帐户提供“Access Key Id”和“Secret Access Key

    你也可以试试这个..

    CREATE TABLE csvexport(id BIGINT, time STRING, log STRING)
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '\t'
    LOCATION 's3n://"access id":"secret key"@bucket/folder/path';
    

    现在按照上述其他方式插入数据..

    INSERT OVERWRITE TABLE csvexport select id, time, log from csvimport;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-23
      • 1970-01-01
      • 2022-08-11
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      相关资源
      最近更新 更多