Tôi nhận được giá trị null trong khi tải dữ liệu từ tệp phẳng vào bảng hive.
cấu trúc bảng của tôi là như thế này:nhận giá trị null trong khi tải dữ liệu từ tệp phẳng vào bảng hive
hive> create table test_hive (id int,value string);
và tập tin căn hộ của tôi là như thế này: INPUT.TXT
1 a
2 b
3 c
4 d
5 e
6 F
7 G
8 j
khi tôi chạy các lệnh dưới đây tôi nhận được các giá trị null:
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
ảnh chụp màn hình:
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
Có thể bạn cần xác định cách hàng/cột được phân tách trong tệp đầu vào khi tải vào bảng Hive.Bạn có thể thử một cái gì đó như: 'tạo bảng test_hive (id int, chuỗi giá trị) ROW FORMAT DELIMITED FIELDS TERMINATED BY '' LƯU TRỮ TEXTFILE VỊ TRÍ '/ người dùng/hadoop/hive/đầu vào';' –
Vấn đề bạn đang phải đối mặt là bởi vì trong của bạn dữ liệu các trường được phân cách bởi '' và trong khi tạo bảng bạn không đề cập đến dấu phân tách trường. Vì vậy, nếu bạn không đề cập đến dấu phân cách trường trong khi tạo bảng hive, theo mặc định, hive xem^A làm dấu phân cách. Vì vậy, để giải quyết vấn đề của bạn, bạn có thể tạo lại bảng đề cập đến cú pháp dưới đây và nó sẽ hoạt động. TẠO BẢNG TABLE test_hive (id INT, giá trị STRING) ĐỊNH DẠNG ROW TẮT L FII TẮT B'NG ''; –