【问题标题】:sqoop-hive Import adding an extra columnsqoop-hive 导入添加一个额外的列
【发布时间】:2016-07-15 07:13:43
【问题描述】:

我已成功将数据从sqoop 导入到hive。我在Oracle 中添加了一个列,并使用sqoop-import 再次将特定列导入到hive。但是,它附加到第一列数据和剩余的空列,并且没有新列进入配置单元。谁能解决这个问题。

【问题讨论】:

    标签: oracle import hive sqoop


    【解决方案1】:

    不查看您的 import 语句,我假设在您的第二次导入中,您尝试追加到现有导入,但仅使用 --columns--append 参数导入新列。它不会以这种方式工作,因为它会在文件末尾而不是每行末尾附加到文件。

    您需要使用--hive-overwrite 覆盖hdfs 中的现有数据;并更改配置单元表以添加其他列。或者只是删除 hive 表并在 sqoop 命令中使用--create-hive-table

    所以你的import 命令应该是这样的:

     sqoop --import \
           --connect $CONNECTION_STR \ 
           --username $USER \
           --password $PASS \
           --table $ORACLE_TABLE \
           --hive-import \
           --hive-overwrite \
           --hive-table \
           --hive-home $HIVE_HOME \
           --hive-table $HIVE_TABLE 
    

    将值更改为环境的实际值

    【讨论】:

    • 我认为“--hive-overwrite”这将删除整个表并再次重新导入它对吗?这会导致性能问题。
    • 同意,但您不会每天都添加列。这将是一年一次,也可能是一个月一次。我没有看到任何其他可用的直接 sqoop 选项可以满足您的要求。
    • 而且 hdfs 不允许修改文件但允许追加 - 所以 sqoop 将无法进行修改。如果追加现有数据,则不会添加列值
    猜你喜欢
    • 2016-04-26
    • 2016-08-07
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 2017-07-01
    • 2016-05-10
    相关资源
    最近更新 更多