2016-08-23 109 views
0

请看看我的过程&问题如下:第一步 -I想先我使用SQOOP使用 导入增量数据的增量fashion.So加载一个mysql表数据“渐进式追加检查列最后一个值' 假设这个商店到HDFS文件夹'/ sqoopdir1' 第2步 - 我想使用猪脚本来做一些数据验证,如重复检查,结果应该到'/ user/root/pigdir' 步骤3 - 我想创建一个蜂巢外部表'extsample',指向pig输出目录为“保存为文本文件位置'/ user/root/pigdir'蜂巢外部表增量加载

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

总之,我想要初始加载数据+刚刚插入/更新记录在最终配置单表中。作为初学者,请你帮忙解决提到的问题或建议更好的方法。谢谢!

回答

0

1)根据我的理解,你正试图将每个增量数据sqoop到同一个文件夹?但是这不是真的,sqoop也会抛出一个异常文件夹已经存在。部分m-00文件是sqoop的输出,因此如果您考虑它,所有这些“部分”文件都是您通过单个sqoop摄入生成的增量数据。

我们需要在代码中处理这个问题,就像每个sqoop增量摄取,我们需要提供一个动态的输出位置(追加时间戳的文件夹名称)......同去用猪。如果您使用shell脚本调用sqoop,并且猪传递动态位置非常简单。

+0

嗨,因为它是SQOOP增量APPEND,它允许我在同一个文件夹中有多个文件,如part-m-00001,part-m-00002等 – user6392682

+0

然后,您可能需要一个暂存文件夹来保存一个特定的增量数据并尝试将其传递给猪script.Or使用基于时间戳的逻辑,以获得最新的增量文件,并将其输送到猪脚本... –

+0

谢谢您同意reply.Do,在使用之间猪脚本是一种有效的方法?如果可以,请给我一些使用猪的有效数据验证示例(如重复删除)?临时表也应该作为外部表格外壳而仅仅是特定的日期增量数据吗?我们是否需要对临时表数据执行任何操作,还是仅用于存放增量数据? – user6392682