如何在压缩表中通过Sqoop从Oracle导入Hive
尝试将Sqoop从Oracle导入文本分区表中的Hive中,并且可以正常工作。当尝试在压缩(SNAPPY,ZLIB,BZIP2)表中执行相同操作时,同时使用带有相应编解码器的Sqoop压缩数据时,它将创建文件。但是当尝试通过Hive选择时,出现错误: 错误: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: --delete-target-dir --target-dir “ /environ..3/2019/4/20190416” -压缩编解码器 “ org.apache.hadoop.io.compress.BZip2Codec” -蜂巢表 “ ... tmp_member3” --hcatalog-storage-节 '存储为orc tblproperties(“ orc.compress” =“ BZIP2”)' --hive-partition-key “'年月日'” --hive-partition-value “'2019','4','20190416'”
蜂巢: 创建外部表xx.tmp_member3(a STRING,kpi_name STRING,b STRING,c STRING),按(年,月,日,日)行格式分隔的字段以“,”存储为ORC位置“ /”作为环境分隔。 2019/4/20190416'TBLPROPERTIES('orc.compress'='BZIP2');
我已经尝试了'set hive.exec.orc.split.strategy = BI',但没有成功。
答案 0 :(得分:1)
我个人将分两步解决。
第一个方法是将Oracle中的数据获取到常规的蜂巢文本格式阶段表,然后按照需要将数据从阶段转换为蜂巢兽人表。