Split 如何从Oracle将Sqoop导入压缩分区配置单元表

Split 如何从Oracle将Sqoop导入压缩分区配置单元表,split,compression,sqoop,orc,Split,Compression,Sqoop,Orc,如何在压缩表中将Sqoop从Oracle导入到配置单元 在文本分区表中尝试了从Oracle到配置单元的Sqoop导入,效果良好。在压缩(SNAPPY、ZLIB、BZIP2)表中尝试执行相同操作时,同时使用相应的编解码器使用Sqoop压缩数据,它会创建文件。但是,当尝试通过配置单元进行选择时,我得到了错误: 错误:java.io.IOException:java.lang.RuntimeException:ORC拆分生成失败,异常为:org.apache.ORC.FileFormatExcepti

如何在压缩表中将Sqoop从Oracle导入到配置单元

在文本分区表中尝试了从Oracle到配置单元的Sqoop导入,效果良好。在压缩(SNAPPY、ZLIB、BZIP2)表中尝试执行相同操作时,同时使用相应的编解码器使用Sqoop压缩数据,它会创建文件。但是,当尝试通过配置单元进行选择时,我得到了错误: 错误:java.io.IOException:java.lang.RuntimeException:ORC拆分生成失败,异常为:org.apache.ORC.FileFormatException:格式错误的ORC文件maprfs:///envir.../2019/4/20190416/part-m-00000.snappy. 无效的附言。(状态=,代码=0)

测试如下: -创建表 -修改sqoop选项文件 -运行Sqoop -改变表格。。添加分区 -请尝试选择,这将导致错误

SQOOP: --删除目标目录 --目标目录 “/environ..3/2019/4/20190416” --压缩编解码器 “org.apache.hadoop.io.compress.BZip2Codec” --蜂箱台 “…tmp_成员3” --hcatalog存储节 '存储为orc TBLProperty(“orc.compress”=“BZIP2”)' --配置单元分区密钥 “‘年’、‘月’、‘日’” --配置单元分区值 “'2019'、'4'、'20190416'”

蜂巢: 创建外部表xx.tmp_member3(a字符串、kpi_名称字符串、b字符串、c字符串),按(年整数、月整数、日整数)行格式分隔字段进行分区,以“,”结尾,存储为ORC位置“/envir../2019/4/20190416”TBLProperty('ORC.compress'='BZIP2')


我已经尝试过“set-hive.exec.orc.split.strategy=BI”,但没有成功。

我个人会分两步解决这个问题


第一种方法是将数据从Oracle获取到一个普通的配置单元文本格式阶段表,然后根据您的要求以压缩格式从阶段获取到配置单元orc表

这增加了额外的步骤。将数据复制到文本表中是对空间的极大浪费。这就是我一开始想要避免的。Sqoop的手册说我应该能够做到这一点。完成第二步后,就可以截断第一个表中的数据。是的,这是一个选项。不过,如果能够做到Sqoop所说的,那就太好了。我怀疑这只是一个Sqoop选项。