Sqoop 导入命令出错

Error with Sqoop Import Command

我正在尝试使用 Sqoop 将 table 从 MySQL 中的数据库导入到 HDFS。 table 包含字段 col1、col2、col3、col4 和 col5。其中有很多 NULL 值。具有 NULL 值的行数为 4265550,没有 NULL 值的行数为 1421851。我想在将 table 导入 HDFS 时阻止 NULL 值。以下是我的代码,

sqoop import --connect "jdbc:mysql://quickstart.cloudera:3306/database" --username root --password cloudera --query 'SELECT * FROM table_export WHERE ((col1 IS NOT NULL) OR (col2 IS NOT NULL) OR (col3 IS NOT NULL) OR (col4 IS NOT NULL) OR (col5 IS NOT NULL) AND $CONDITIONS)' --target-dir /user/cloudera/input/table_export --direct -m 1

但是当我 运行 这个查询时,也导入了 NULL 值。我哪里做错了?

如果我需要使用“--where条件”,

案例 1:

--where (col1 IS NOT NULL) OR (col2 IS NOT NULL) OR (col3 IS NOT NULL) OR (col4 IS NOT NULL) OR (col5 IS NOT NULL)

案例2:

--where (col1 != NULL) OR (col2 != NULL) OR (col3 != NULL) OR (col4 != NULL) OR (col5 != NULL)

我应该使用哪一个? 请帮帮我。提前致谢

你应该使用 Case1。

--where "(col1 IS NOT NULL) OR (col2 IS NOT NULL) OR (col3 IS NOT NULL) OR (col4 IS NOT NULL) OR (col5 IS NOT NULL)"

因为(col1 != NULL)的结果未定义。 NULL 不能等于或不等于另一个值或 NULL。另请参阅此答案:

你可以使用Case1。

如果您不想在输出中出现任何空值,请在您粘贴的查询中将 OR 更改为 AND。