gpt4 book ai didi

hadoop - 使用Pig LOAD语句加载新文件

转载 作者:行者123 更新时间:2023-12-02 21:47:48 25 4
gpt4 key购买 nike

我想使用PIG脚本将数据从HDFS加载到HBSE表。

我的hadfs文件夹结构如下:

-rw-r--r--  1 user supergroup   63 2014-05-15 20:28 dataparse/good/goodrec_051520142028
-rw-r--r-- 1 user supergroup 72 2014-05-15 20:30 dataparse/good/goodrec_051520142030
-rw-r--r-- 1 user supergroup 110 2014-05-15 20:32 dataparse/good/goodrec_051520142032

在上面,所有文件名都附带时间戳。

以下是我的从HDFS加载到HBASE的PIG脚本:
G = LOAD '/user/user/dataparse/good/' USING PigStorage(',') as (c1:chararray, c2:chararray,c3:chararray,c4:chararray,c5:chararray);
STORE G INTO 'hbase://test' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('t1:name t1:state t1:phone_no t1:gender');

该脚本运行良好,并且将所有3个文件中的数据都写入了Hbase“ test ”表中。

假设一段时间后,如果有更多具有相同结构的文件进入HDFS,则当我运行Pig脚本时,它将与已读取的文件一起加载“ good ”目录中的所有文件。因此,我如何才能仅加载那些是新文件的文件。已经加载的文件不应再次加载到我的HBASE表中。

我怎样才能做到这一点?

谢谢,
Sapthashree

最佳答案

我认为您在这里有一些选择。

使用globs

  • 使用shell脚本拾取"new"文件,使用glob功能
    可以将多个文件输入脚本。一个相关的用例是
    here
  • 如果文件名中包含日期和时间戳,则可以
    直接使用glob,看看here来启发

  • 使用大枪
  • 如果使用globs失败了,那么您需要带出大块头
    枪,使用逻辑中放置的自定义加载功能来识别“新
    文件”中,您应该会很好。详细信息here
  • 关于hadoop - 使用Pig LOAD语句加载新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23676080/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com