如何传输数据和从Hive到RDBMS的元数据

时间:2016-10-26 22:40:31

标签: hadoop apache-spark hive sqoop

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

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

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

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

提前致谢

2 个答案:

答案 0 :(得分:1)

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

这不会很有趣。

答案 1 :(得分:1)

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

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

为什么会这样?

从RDBMS到Hive的映射 easy 因为hive只有很少的数据类型(10-15)。从多个RDBMS数据类型到Hive数据类型的映射很容易实现。但反之亦然。典型的RDBMS有100个数据类型(在不同的RDBMS中太不相同)

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