【问题标题】:How to Sqoop import into compressed partitioned Hive table from Oracle如何 Sqoop 从 Oracle 导入压缩分区 Hive 表
【发布时间】:2019-10-07 23:47:55
【问题描述】:

如何将 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: --删除目标目录 --目标目录 “/环境..3/2019/4/20190416” --压缩编解码器 “org.apache.hadoop.io.compress.BZip2Codec” --hive 表 “...tmp_member3” --hcatalog-存储-节 '存储为 orc tblproperties ("orc.compress"="BZIP2")' --hive-partition-key “'年月日'” --hive-partition-value "'2019','4','20190416'"

蜂巢: CREATE EXTERNAL TABLE xx.tmp_member3 (a STRING,kpi_name STRING, b STRING, c STRING) PARTITIONED BY (YEAR INT,MONTH INT,DAY INT) ROW FORMATDELIMITED FIELDS TERMINATED BY ',' STORED AS ORC LOCATION '/envir../ 2019/4/20190416' TBLPROPERTIES ('orc.compress'='BZIP2');

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

【问题讨论】:

    标签: split compression sqoop orc


    【解决方案1】:

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

    第一个是将数据从 Oracle 获取到普通的 hive 文本格式阶段表,然后根据您的要求从阶段到具有压缩格式的 hive orc 表。

    【讨论】:

    • 那是增加额外的步骤。并且在文本表中重复数据是很大的空间浪费。这是我一开始就试图避免的。 Sqoop 的手册说我应该可以做到。
    • 完成第二步后,您可以截断第一个表中的数据。
    • 是的,这是一个选项。不过,如果能够做到 Sqoop 所说的那样,那就太好了。我怀疑这只是一个 Sqoop 选项。
    猜你喜欢
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-07
    • 2017-02-03
    相关资源
    最近更新 更多