可以使用Sqoop将数据从HDFS导出到RDBMS表。 但似乎我们需要有现有的表格。
是否有一些参数告诉Sqoop执行'CREATE TABLE'并将数据导出到这个新创建的表中?
如果是,是否可以与Oracle合作?
答案 0 :(得分:9)
我担心Sqoop目前不支持在RDBMS中创建表。 Sqoop使用RDBMS中的表来获取元数据(列数及其数据类型),因此我不确定Sqoop可以在哪里获取元数据来为您创建表。
答案 1 :(得分:3)
您实际上可以通过sqoop eval执行任意SQL查询和DDL,至少使用MySQL和MSSQL。我希望它也可以与Oracle合作。 MSSQL示例:
sqoop eval --connect 'jdbc:sqlserver://<DB SERVER>:<DB PORT>;
database=<DB NAME>' --query "CREATE TABLE..."
--username <USERNAME> -P
答案 2 :(得分:0)
我注意到你也使用了Oracle。某些特定于sqoop供应商的sqoop连接器支持该功能,包括Oracle。 Sqoop的Oracle直接连接模式可以选择
https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_create_oracle_tables
24.8.5.4。创建Oracle表
-Doraoop.template.table = TemplateTableName
通过复制结构和数据类型来创建OracleTableName TemplateTableName。 TemplateTableName是Oracle中存在的表 在执行Sqoop命令之前。
PS。您必须使用--direct sqoop export选项来激活sqoop direct mode ='Data Connector for Oracle and Hadoop'(又名OraOOP - 旧名称)。