使用sqoop通用导入oracle表

时间:2017-11-04 18:23:35

标签: java oracle hadoop sqoop

我们在oracle中有许多表,我们希望将其移至hdfs用于存档目的。我们正在寻找将表复制到hadoop的通用方法。表的列主要是NUMBER,VARCHAR2和DATE类型。

我们知道sqoop是最有效地完成工作的工具。由于其模式演变功能,输出格式应为AVRO 当我们仔细观察时,我们发现使用oracle和hadoop的数据连接器处理日期和时间戳列是有问题的。基本上,这两个选项是设置timestamp.string=false并将DATE列存储为long。缺点是您丢失了时区信息。此外,如果我们要将数据导出回oracle DATE列必须采用yyyy-mm-dd hh24:mi:ss格式 另一个选项是设置timestamp.string=true。我们对此选项的问题是,为DATE列生成的AVRO架构仍为{null,long},为什么在将记录写入AVRO文件时会引发错误。作为解决方法,我们可以为每个DATE列设置--map-column-java DATE_COL=String参数。但由于我们正在寻找一种通用解决方案,因此这不是一个很好的选择。

您对如何解决这个问题有任何建议吗?

0 个答案:

没有答案