我们可以在 sqoop import 命令的查询参数中有两个 sql 查询吗

Can we have two sql queries in the query parameter of the sqoop import command

我正在尝试将两个 table 从 RDBMS 导入到 Hive。是否有可能在 sqoop 导入命令的 --query 参数中触发两个 sql 查询。

目前,我可以使用以下命令使用一个 sql 查询来查询 table:

sqoop import --connect jdbc:teradata://192.168.xx.xx/DBS_PORT=1025,DATABASE=ds_tbl_db 
--driver com.teradata.jdbc.TeraDriver 
--username dbc 
--password dbc 
--query 'select * from table' 
--hive-import 
--hive-table reason_hive 
--target-dir <hdfs-location> 
-m 1

不,您不能在 --query 参数中使用两个 SQL 来将输出存储在两个不同的 Hive 表中。

你必须一项一项地完成。

编辑:

您不能完全依赖 sqoop 来执行 SQL 查询。通过 Sqoop 支持连接查询。但只推荐 简单的查询。

Sqoop 预计 WHERE $CONDITIONS 在 sql 查询的末尾。换成sqoop进行范围查询,这样多个mapper可以运行SQL并行查询。查看我的另一个 answer 了解详情。

示例查询:

--query "SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS"

在您的 sqoop 命令中添加 -verbose 以查看 sqoop for bebug 触发的查询。