【问题标题】:Sqoop - Create empty hive partitioned table based on schema of oracle partitioned tableSqoop - 根据 oracle 分区表的模式创建空的 hive 分区表
【发布时间】:2014-10-09 00:55:22
【问题描述】:

我有一个 oracle 表,它有 80 列,id 在 state 列上分区。我的要求是创建一个具有类似 oracle 表架构并按状态分区的配置单元表。

我尝试使用 sqoop -create-hive-table 选项。但是一直报错

错误 sqoop.Sqoop:运行 Sqoop 时出现异常:java.lang.IllegalArgumentException:分区键状态不能是要导入的列。

我知道在 Hive 中,分区列不应该在表定义中,但是我该如何解决这个问题?

我不想手动编写创建表命令,因为我有 50 个这样的表要导入并且想使用 sqoop。

有什么建议或想法吗?

谢谢

【问题讨论】:

    标签: oracle hive sqoop partition


    【解决方案1】:

    对此有一个转机。 以下是我休闲的程序:

    1. 在 Oracle 上运行查询以获取表的架构并将其存储到文件中。
    2. 将该文件移至 Hadoop
    3. 在 Hadoop 上创建一个用于构建 HQL 文件的 shell 脚本。
    4. 该 hql 文件包含“Hive 创建表语句以及列”。为此,我们可以使用上述文件(Oracle 模式文件复制到 hadoop)。
    5. 要运行此脚本,您只需传递 Hive 数据库名称、表名称、分区列名称、路径等,具体取决于您的自定义级别。在此 shell 脚本的末尾添加“hive -f HQL 文件名” .
    6. 如果一切准备就绪,每个表的创建只需要几分钟时间。

    【讨论】:

    • 是的,我已经在做类似的事情了。我通过查询 sys 表将表名传递给 Oracle 并构建模式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 2015-11-07
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    相关资源
    最近更新 更多