如何让Apache Drill在csv文件中理解显式的`NULL`?

时间:2017-01-30 14:54:51

标签: csv null apache-drill

假设我有这个CSV文件:

a,b
NULL,1
1,2

然后我尝试做一些查询:

> SELECT * FROM dfs.`/path/to/foo.csv`;
+-------+----+
|   a   | b  |
+-------+----+
| NULL  | 1  |
| 1     | 2  |
+-------+----+
2 rows selected

> SELECT * FROM dfs.`/path/to/foo.csv` WHERE a is NULL;
+----+----+
| a  | b  |
+----+----+
+----+----+
No rows selected

> SELECT * FROM dfs.`/path/to/foo.csv` WHERE a is NOT NULL;
+-------+----+
|   a   | b  |
+-------+----+
| NULL  | 1  |
| 1     | 2  |
+-------+----+
2 rows selected

> SELECT * FROM dfs.`/path/to/foo.csv` WHERE a > 0;
Error: SYSTEM ERROR: NumberFormatException: NULL

Fragment 0:0

似乎Apache Drill正在考虑将NULL作为字符串。

即使我用空字符串(sed -i 's/NULL//g' foo.csv)替换它,Apache Drill仍然认为这些值不为空。

有没有办法让它考虑NULL(或空值)......好吧...... null

我使用的是最新版本:1.9.0。

1 个答案:

答案 0 :(得分:1)

绝对可以!

  1. http://[your drillbit ip]打开控制台:8047然后点击 右上角的“选项”按钮。
  2. 找到“drill.exec.functions.cast_empty_string_to_null”并将其设置为true。