2016-07-12 97 views
0

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

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

谢谢。

回答

0

关于你的问题。

  1. 号 作为Apache文件中提到: “在--exclude桌参数是+仅sqoop-进口的所有桌”。见下面Apache的文档(搜索报价”。 https://sqoop.apache.org/docs/1.4.4/SqoopUserGuide.html#_syntax

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 
+0

谢谢。那么在那种情况下,一旦我将表加载到hdfs,我如何为已经在hdfs中的多个文件创建外部表? –

+0

我认为你可以使用“--exclude-tables”导入所有表格,指定“--hive-database”。所有表格将在Hive中自动创建。如果您不使用“--hive-import”,则必须手动创建外部表。 – NangSaigon

0

对于来自RDBMS数据导入到外部蜂巢表中,您需要遵循

1)使用Sqoop创建外部蜂巢表(必须创建所有表)。 2)导入数据。(这可以使用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