【问题标题】:How load into Hadoop/Hive only the 365 more recent files?如何仅将 365 个最近的文件加载到 Hadoop/Hive 中?
【发布时间】:2015-05-24 21:07:10
【问题描述】:

我创建一个表:

CREATE EXTERNAL TABLE events (
  id bigint, received_at string, generated_at string, source_id int, source_name string, source_ip string, facility string, severity string, program string, message string
)
PARTITIONED BY (
  dt string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION 's3://mybucket/folder1/folder2';

s3://mybucket/folder1/folder2里面有多个文件夹,命名格式dt=YYYY-MM-DD/,每个文件夹里面有1个文件,命名格式YYYY-MM-DD.tsv.gz

然后我通过MSCK REPAIR TABLE events; 加载表格。当我执行SELECT * FROM events LIMIT 5; 时,我得到了

OK
Failed with exception java.io.IOException:com.amazonaws.services.s3.model.AmazonS3Exception: The operation is not valid for the object's storage class (Service: Amazon S3; Status Code: 403; Error Code: InvalidObjectState; Request ID: 66C6392F74DBED77), S3 Extended Request ID: YPL1P4BO...+fxF+Me//cp7Fxpiuqxds2ven9/4DEc211JI2Q7BLkc=
Time taken: 0.823 seconds

因为超过 365 天的物体已被移至 Glacier。

我如何以编程方式仅将 365 个最近的文件加载到其中,或者更好的是,我可以指定仅加载比设定日期更新/命名超过设定日期的文件?

PS:我只会在需要时启动 Hadoop/Hive 集群。它总是从头开始——其中没有以前的数据——因此只关心添加数据,而不是删除它。

【问题讨论】:

    标签: hadoop hive bigdata hiveql hadoop2


    【解决方案1】:

    您需要通过仅专门添加 S3 支持的分区来避免 Hive 看到 Glacier 支持的分区。创建表格后,您需要对 365 个日期中的每个日期执行此操作,如下所示:

    CREATE EXTERNAL TABLE ...;
    ALTER TABLE events ADD PARTITION (dt = '2015-01-01');
    ALTER TABLE events ADD PARTITION (dt = '2015-01-02');
    ALTER TABLE events ADD PARTITION (dt = '2015-01-03');
    ...
    ALTER TABLE events ADD PARTITION (dt = '2015-12-31');
    SELECT * FROM events LIMIT 5;
    

    【讨论】:

    • 我只会在需要时启动 Hadoop/Hive 集群。所以它总是从头开始——其中没有以前的数据——因此只关心添加数据,而不是删除它。
    • 也许我可以编写ADD PARTITION 语句的脚本?一个接一个将是一场噩梦。
    • 是的,应该很容易编写脚本。
    • 那将是一个更好的答案。
    • 如何编写一堆日期驱动的命令可能是一个不同的问题,取决于您的平台、工具等。这个答案只是坚持如何调用 Hive 而不从 Glacier 子目录中读取。
    猜你喜欢
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多