hive外部表增量加载

时间:2016-08-23 16:58:24

标签: hive sqoop

请参阅我的流程&问题如下: step1 - 我想以增量方式加载一个mysql表数据。所以我首先使用SQOOP导入增量数据 'INCREMENTAL append check-column last-value' 假设这存储到HDFS文件夹'/ sqoopdir1' 第2步 - 我想使用pig脚本来执行一些数据验证,例如重复检查,结果应该转到'/ user / root / pigdir' 第3步 - 我想创建一个指向pig输出目录的hive外部表'extsample'为“存储为文本文件位置”/ user / root / pigdir'

我的问题是 (1)SQOOP将在HDFS文件夹/ sqoopdir1中创建part-m-00001,part-m-00002等。对于每个增量过程,我只需要PIG进程的最新文件自动选择。 (2)另一个问题是,PIG在/ user / root / pigdir中创建part-r-00000文件。第二次作业失败,说文件已经存在,所以我必须重命名该文件以运行PIG作业。

简而言之,我希望在最终的hive表中有初始加载的数据+刚刚插入/更新的记录。由于我是初学者,请帮助解决上述问题或建议更好的方法。谢谢!

1 个答案:

答案 0 :(得分:0)

1)根据我的理解,您试图将每个增量数据sqoop到同一个文件夹中?但是不可能,sqoop也会抛出异常文件夹。 Part-m-00文件是sqoop的输出,所以如果你仔细考虑那些" part"文件是单个sqoop摄取生成的增量数据。

我们需要在代码中处理这个问题,比如每个sqoop增量提取我们需要提供一个动态输出位置(将时间戳附加到文件夹名称)......与Pig相同。如果您使用shell脚本调用sqoop并且猪通过动态位置非常容易。