我的配置单元环境中有300多个表。我想将所有表从hive导出到oracle/mysql,包括元数据。我的oracle数据库没有任何与这些配置单元表对应的表。从oracle导入到配置单元的sqoop在配置单元中创建不存在的表。但sqoop从hive导出到oracle不会创建表(如果不存在),并且会出现异常而失败。sqoop中是否也有导出元数据的选项?或者有没有其他hadoop工具可以让我实现这一点?提前谢谢
cqoc49vn1#
你要求的功能不在spark中。不幸的是,我也不知道现在有哪种hadoop工具能满足你的要求。一种可能的解决方法是在配置单元中使用“show create table mytable”语句。它将返回CREATETABLE语句。您可以通过awk手动或实际地解析它,并在文件中获取create表,然后针对您的oracledb运行此文件。在那里,您可以使用sqoop填充表。不会有意思的。
mrwjdhj32#
sqoop不能基于hive表在rdbms中复制元数据或创建表。表必须存在于rdbms中才能执行sqoop导出。
从rdbmsMap到hive很容易,因为hive只有很少的数据类型(10-15)。从多个rdbms数据类型Map到hive数据类型是很容易实现的。但反过来也不是那么容易。典型的rdbms有100种数据类型(这在不同的rdbms中太不一样了)。另外,sqoop导出是新添加的特性。这个功能将来可能会出现。
2条答案
按热度按时间cqoc49vn1#
你要求的功能不在spark中。不幸的是,我也不知道现在有哪种hadoop工具能满足你的要求。一种可能的解决方法是在配置单元中使用“show create table mytable”语句。它将返回CREATETABLE语句。您可以通过awk手动或实际地解析它,并在文件中获取create表,然后针对您的oracledb运行此文件。在那里,您可以使用sqoop填充表。
不会有意思的。
mrwjdhj32#
sqoop不能基于hive表在rdbms中复制元数据或创建表。
表必须存在于rdbms中才能执行sqoop导出。
为什么会这样?
从rdbmsMap到hive很容易,因为hive只有很少的数据类型(10-15)。从多个rdbms数据类型Map到hive数据类型是很容易实现的。但反过来也不是那么容易。典型的rdbms有100种数据类型(这在不同的rdbms中太不一样了)。
另外,sqoop导出是新添加的特性。这个功能将来可能会出现。