次のクエリを試してください。行が返されますか?
select count(*)
from test_table
where test_col_id1='12345' and test_col_id2 != 'NULL';
次に、あなたのNULL
それは、文字列 'NULL' だ、NULL
ではありません。人々の負荷はNULL
文字列のハイブ治療に問題があります。デフォルトでは、空白の文字列''
です。他にも必要な場合は、テーブルを作成するときにNULL文字列を扱う方法を厳密に指定する必要があります。 NULL
として認識されるものを変更する方法の3つの例を以下に示します。 NULL
として最初の1組の「NULL」の文字列:あなたはすでにあなたのテーブルを作成しましたので、それが認識されるように
CREATE TABLE nulltest1 (id STRING, another_string STRING)
TBLPROPERTIES('serialization.null.format'='NULL') --sets the string 'NULL' as NULL;
CREATE TABLE nulltest2 (id STRING, another_string STRING)
TBLPROPERTIES('serialization.null.format'='') --sets empty string as NULL;
CREATE TABLE nulltest3 (id STRING, another_string STRING)
TBLPROPERTIES('serialization.null.format'='\N'); --sets \N as NULL;
は、あなたがあなたのテーブルを変更することができ、あなたの'NULL'
NULL
として:
ALTER TABLE test_table SET TBLPROPERTIES ('serialization.null.format' = 'NULL');
どのような種類のSerDeを使用していますか?Text、Sequence、AVRO、Parquet、ORC?あなたが* Nullだと思う値を持つ行を選択すると、それは "null"または空の文字列として表示されますか? –
Hiveのどのバージョン? TEZ *(どちらのバージョン)*またはプレーンなMapReduceを使用していますか? –
私はコマンドラインから質問しています。レコードを照会すると、コマンドラインに** NULL **が表示されます。 –