使用SQOOP从RDBMS导入数据

时间:2016-07-12 10:36:14

标签: hadoop hive sqoop

我正在尝试将数据从SQL Server数据库导入到Hive。基本上我将整个数据库(除了一些表)导入Hive。在这里,我有一些问题,我无法从任何地方得到答案。

  1. 我们可以对import-all-tables和--exclude-tables使用“--hive-import”吗? ?如果没有,一旦我将所有表加载到hfds中,如何使用create external table选项为所有表构建元数据?
  2. 我们可以在sqoop import命令中的任何位置指定配置单元数据库名称。 ?
  3. 感谢。

2 个答案:

答案 0 :(得分:0)

关于你的问题。

  1. 否。 正如Apache文档中所提到的:“--exclude-tables参数仅适用于+ sqoop-import-all-tables”。请参阅下面Apache的文档(搜索引用“。 https://sqoop.apache.org/docs/1.4.4/SqoopUserGuide.html#_syntax
  2. 2.Yes。这是一个例子。

    import-all-tables  --connect ${connectString} --username ${username} -- password ${password}  --hive-home /opt/hive  --hive-database ${database} -- verbose --hive-import --hive-drop-import-delims -m 1
    

答案 1 :(得分:0)

要从RDBMS将数据导入外部配置单元表,您需要按照

1)创建外部配置单元表(必须创建所有表)。 2)使用Sqoop导入数据(这可以使用shell脚本完成)

准备一个包含DBNAME.TABLENAME列表的输入文件。 shell脚本将此文件作为输入,逐行迭代并为每一行执行sqoop语句。

while read line;
do

    DBNAME=`echo $line | cut -d'.' -f1` 
    tableName=`echo $line | cut -d'.' -f2`


    sqoop import -Dmapreduce.job.queuename=$QUEUE_NAME --connect '$JDBC_URL;databaseName=$DBNAME;username=$USERNAME;password=$PASSWORD' --table $tableName  --target-dir $HIVE_EXTERNAL_TABLE_PATH/$tableName  --fields-terminated-by '\001'  -m 1 


done<inputFile