使用Pig LOAD语句加载新文件

时间:2014-05-15 10:48:36

标签: hadoop apache-pig

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

我有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

1 个答案:

答案 0 :(得分:0)

我认为你有几个选择。

使用globs

  • 使用shell脚本选择“新”文件,使用glob功能 多个文件可以输入脚本。一个相关的用例是 here
  • 如果文件在文件名中有日期和时间戳,那么你可以 直接使用globs,看here灵感

使用大枪

  • 如果使用globs失败了你,那么你需要带出大奖 枪支,使用逻辑中的自定义加载函数来识别“新的” 文件“在其中,你应该很高兴。详情here