フラットファイルからハイブテーブルにデータをロードする際に、NULL値を取得しています。
私のテーブルの構造は、このようなものです:フラットファイルからハイブテーブルにデータをロードする際にヌル値を取得する
hive> create table test_hive (id int,value string);
と私のフラット・ファイルは、このようなものです:
:私はnull値を取得しています以下のコマンドを実行していたときに
INPUT.TXT
1 a
2 b
3 c
4 d
5 e
6 F
7 G
8 j
hive> LOAD DATA LOCAL INPATH '/home/hduser/input.txt' OVERWRITE INTO TABLE test_hive;
hive> select * from test_hive;
OK<br>
NULL NULL
NULL NULL
NULL NULL
NULL NULL
NULL NULL
NULL NULL
NULL NULL
NULL NULL
スクリーンショット:
hive> create table test_hive (id int,value string);
OK
Time taken: 4.97 seconds
hive> show tables;
OK
test_hive
Time taken: 0.124 seconds
hive> LOAD DATA LOCAL INPATH '/home/hduser/input2.txt' OVERWRITE INTO TABLE test_hive;
Copying data from file:/home/hduser/input2.txt
Copying file: file:/home/hduser/input2.txt
Loading data to table default.test_hive
Deleted hdfs://hydhtc227141d:54310/app/hive/warehouse/test_hive
OK
Time taken: 0.572 seconds
hive> select * from test_hive;
OK
NULL NULL
NULL NULL
NULL NULL
NULL NULL
NULL NULL
NULL NULL
NULL NULL
NULL NULL
Time taken: 0.182 seconds
は、おそらくあなたはハイブテーブルにロードするときに、あなたの入力ファイルで区切られているかの行/列を指定する必要があります。あなたは次のようなものを試してみることができます: 'create table test_hive(id int、value string)' 'TEXTFILE LOCATION 'として保存された行形式のフィールドを削除しました/ user/hadoop/hive/input'; ' –
あなたが直面している問題は、データは ''で区切られています。テーブルを作成している間は、フィールドの区切り文字については言及していませんでした。だから、ハイブテーブルを作成するときにフィールドの区切り文字について言及しなければ、デフォルトでハイブは^ Aを区切り文字とみなします。 問題を解決するには、以下の構文を記述したテーブルを再作成すると動作します。 CREATE TABLE test_hive(ID INT、値STRING) 行フォーマットフィールドは '';で終了しました。 –