【问题标题】:How to transfer data & metadata from Hive to RDBMS如何将数据和元数据从 Hive 传输到 RDBMS
【发布时间】:2017-03-09 11:13:28
【问题描述】:

我的 hive 环境中有 300 多个表。 我想将所有表从 Hive 导出到 Oracle/MySql,包括元数据。

我的 Oracle 数据库没有与这些 Hive 表对应的任何表。

如果表不存在,从 Oracle 到 Hive 的 Sqoop 导入会在 Hive 中创建表。
但是如果不存在,从 Hive 到 Oracle 的 Sqoop 导出不会创建表,并且会失败并出现异常。

Sqoop 中是否有任何选项也可以导出元数据?要么
是否有其他 Hadoop 工具可以实现这一目标?

提前致谢

【问题讨论】:

  • 您可以为此使用 Spark DataFrame。

标签: hadoop apache-spark hive sqoop


【解决方案1】:

您要求的功能不在 Spark 中。不幸的是,我不知道当前的 hadoop 工具可以满足您的要求。一个潜在的解决方法是在 Hive 中使用“show create table mytable”语句。它将返回创建表语句。您可以通过 awk 手动或实用地解析它并在文件中获取创建表,然后针对您的 oracle 数据库运行此文件。从那里,您可以使用 sqoop 填充表格。

这不会很有趣。

【讨论】:

    【解决方案2】:

    Sqoop 不能在 Hive 表的基础上复制元数据或在 RDBMS 中创建表。

    RDBMS 中必须有表才能执行 sqoop 导出。


    为什么会这样?

    从 RDBMS 到 Hive 的映射很容易,因为 hive 只有很少的数据类型 (10-15)。从多个 RDBMS 数据类型映射到 Hive 数据类型很容易实现。但反过来也不是那么容易。典型的 RDBMS 有 100 种数据类型(在不同的 RDBMS 中差异太大)

    sqoop 导出也是新增功能。将来可能会出现此功能。


    【讨论】:

      猜你喜欢
      • 2018-03-30
      • 2020-05-06
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多