hive 查询表,返回数据全是null的情形分为以下几种:
方式一:

hive> show tables;
OK
student
Time taken: 0.052 seconds, Fetched: 1 row(s)
hive> create table student1(id int,name string) ROW FORMAT DELIMITED FIELDS  TERMINATED BY '\t';
OK
Time taken: 0.705 seconds
hive> load data local inpath '/root/opt/modules/datas/student.txt' into table student;
Loading data to table default.student
Table default.student1 stats: [numFiles=1, totalSize=37]
OK
Time taken: 1.365 seconds
hive> select * from student;
OK
NULL	NULL
NULL	NULL
NULL	NULL
NULL	NULL

其中“/root/opt/modules/datas/student.txt”的内容为下面所示,每一行的(id,name)之间使用一个空格分割。

方式二:

hive> load data local inpath '/root/opt/modules/datas/student.txt' into table student;
Loading data to table default.student
Table default.student1 stats: [numFiles=1, totalSize=37]
OK
Time taken: 1.365 seconds
hive> select * from student;
OK
NULL	NULL
NULL	NULL
NULL	NULL
NULL	NULL

将上述的文件“/root/opt/modules/datas/student.txt”的每一行(id,name)之间使用一个Tab键分割。

解决方法如下所示:
情况3:将情况1中的命令

hive> create table users(id int, name string);

改为

hive> CREATE TABLE student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '
           ' LINES TERMINATED BY '\n' STORED AS TEXTFILE;

其中TERMINATED BY ’ '指定了数据分隔符是一个空格,与“/root/opt/modules/datas/student.txt”中每行分隔符一致。
其查询的结果如下所示:

hive> select id from student;
OK
101
102
103
104
Time taken: 0.151 seconds, Fetched: 4 row(s)
hive> select * from student;
OK
101	Rocky
102	Yinger
103	Ru
104	Rose
Time taken: 0.162 seconds, Fetched: 4 row(s)

综上所述:hive 中创建表加载数据的时候,分隔符与加载文件中的分隔符需要一致,才能得到正确的查询结果。