如何将数据和元数据从hive传输到rdbms

dwbf0jvd  于 2021-05-27  发布在  Spark
关注(0)|答案(2)|浏览(398)

我的配置单元环境中有300多个表。我想将所有表从hive导出到oracle/mysql,包括元数据。
我的oracle数据库没有任何与这些配置单元表对应的表。
从oracle导入到配置单元的sqoop在配置单元中创建不存在的表。
但sqoop从hive导出到oracle不会创建表(如果不存在),并且会出现异常而失败。
sqoop中是否也有导出元数据的选项?或者
有没有其他hadoop工具可以让我实现这一点?
提前谢谢

cqoc49vn

cqoc49vn1#

你要求的功能不在spark中。不幸的是,我也不知道现在有哪种hadoop工具能满足你的要求。一种可能的解决方法是在配置单元中使用“show create table mytable”语句。它将返回CREATETABLE语句。您可以通过awk手动或实际地解析它,并在文件中获取create表,然后针对您的oracledb运行此文件。在那里,您可以使用sqoop填充表。
不会有意思的。

mrwjdhj3

mrwjdhj32#

sqoop不能基于hive表在rdbms中复制元数据或创建表。
表必须存在于rdbms中才能执行sqoop导出。

为什么会这样?

从rdbmsMap到hive很容易,因为hive只有很少的数据类型(10-15)。从多个rdbms数据类型Map到hive数据类型是很容易实现的。但反过来也不是那么容易。典型的rdbms有100种数据类型(这在不同的rdbms中太不一样了)。
另外,sqoop导出是新添加的特性。这个功能将来可能会出现。

相关问题