在命令行执行sqoop import命令如下:
sqoop import --connect jdbc:mysql://localhost:3306/source_data?charset-utf8 --username root --password 1 --table VOUCHER_DETAIL --delete-target-dir -m 1 --hive-import --hive-database DATA_PROCESSING --hive-table SQOOP_VOUCHER_TABLE --hive-drop-import-delims --null-string 'NULL' --null-non-string 'NULL' --hive-overwrite -fields-terminated-by '\t'
可以正常执行完成
当把相应命令转换成java时,参数数组如下:
args = new String[]{
"--connect", String.format("jdbc:mysql://%s/%s?charset-utf8", dataBaseUri, dataBaseName),
"--username", "root",
"--password", pwd,
"--table", tableName,
"-m", mdNum.toString(),
"--hive-import",
"--target-dir", "/user/hive/warehouse/data_processing.db/SQOOP_VOUCHER_TABLE",
"--delete-target-dir",
"--hive-database", "data_processing",
"--create-hive-table",
"--hive-table", "SQOOP_VOUCHER_TABLE",
"--hive-drop-import-delims",
"--null-string", "NULL",
"--null-non-string", "NULL",
"--hive-overwrite",
"--fields-terminated-by", "\t",
};
就会出现错误。
问题1:
虽然参数中设置了--create-hive-table 但是并没有自动创建表,而命令行中没有设置此选项却能够自动创建表。
问题2:
执行后就总是报:
FAILED: SemanticException [Error 10072]: Database does not exist: data_processing
从网上查找了相关问题,都说拷贝hive-site.xml文件到sqoop/conf下 也已经拷贝,但仍不能解决问题。
所有的执行都是使用root账户。
求大佬解惑是什么问题造成的?