hive查看查询结果?

时间:2015-07-20 20:28:52

标签: hadoop hive

每当我使用Hive CLI并进行一些查询,而不是能够查看表格时,我只是得到一个" OK"或错误。我理解这可能是因为许多表非常大但如果我只是想在数据子集上测试我的代码/逻辑,我如何查看整个表结果以确保正确性?

a
ab
abb
abba
After : 
bbba
bbbab
bbbaba
After : 
bbbaba
bbbabaa
After : 
abbabaa
Desired:
a
ab
abb
abba
b
bb
bba....

2 个答案:

答案 0 :(得分:1)

我最好的猜测是你的桌子背后没有数据。您是否创建了一个表并忘记将文件放在正确的hdfs目录中。做一个:

hive>    describe formatted my_table;

然后查看上面给出的HDFS文件位置:

hive>    !hadoop fs -ls /location/obtained/from/describe/command

你应该看到你的文件。如果没有,请确保将文件放在该目录中并再次尝试查询。如果没有,请执行-put或-cp将文件移动到该位置。

测试代码

如果您想要测试一些简单的表达式,可以执行以下操作: 要在hive中创建一个双列表,其中有一列和一行,您可以执行以下操作:

create table dual (x int);
insert into table dual select count(*)+1 as x from dual;

在SQL上测试表达式,就像在SQL中一样:

select split('3,2,1','\\,') as my_new_array from dual;

除此之外,如您所述,最好在数据子集上测试结果。然后,您可以将数据打印到文本文件中,也可以轻松地打印成excel文件或其他您希望完成所需的其他转换后可能更喜欢的格式并查看结果:

--grab a subset of the table
CREATE TABLE my_table_subset like my_table;
Insert overwrite table my_table_subset
select * from my_table 
tablesample (1 PERCENT) t;

如果您不喜欢随机子集,则必须构建查询以定位您喜欢的子集。然后将其打印为您喜欢的文件格式,如上所述:

hive -e "select * from my_table_subset limit 1000" > /localfileystem/path/myexcel.xls;

Excel作为文件查看器可能有局限性,所以其他东西可能更可取......这在数据变得非常大时会出现问题。您可能需要像ultraedit等软件。祝好运!希望这会有所帮助。

答案 1 :(得分:0)

根据我的理解,您的表格中没有任何数据,这就是为什么它不会出现的原因。一般来说,选择*'无论大小如何,都会显示数据。 ' 选择* '命令基本上等同于' cat '命令,与表的大小无关。

如果您想处理数据的子集,最好是创建分区。如果您的数据以不可能分区的方式存储,那么我建议您创建一个包含1000-2000行的临时表并尝试对其进行查询。