我使用了INSERT OVERWRITE DIRECTORY。现在我该如何访问该文件?

时间:2013-06-12 19:09:12

标签: hadoop hive hdfs

显然对HDFS来说是新的,甚至不确定要搜索什么来获得帮助。

我的大部分表都位于HDFS中user / hive / warehouse下的数据库中。我想将SELECT结果存储到我具有写访问权限的目录中,因此我将其存储到user / Jon / folder_name中,这样就可以了。

现在如何访问此文件中的数据?工作目录是user / hive / warehouse,我没有在/ Jon / folder_name文件夹中创建一个表(它只是一个文件)。我试图从folder_name运行一个基本的SELECT计数(*),但我不知道从哪里开始工作。

1 个答案:

答案 0 :(得分:3)

乔恩,我不知道这是否是最好的方法,但它肯定会达到目的。

完成insertion后,您将在目标目录中获得类似000000_0的文件。我知道它是有线的,但文件名是000000_0。如果您的查询有多个减少器,那么您将获得多个文件,如000000_0,000001_0,000002_0等。

假设您发出了以下查询,其中包含1个reducer:

hive> INSERT OVERWRITE DIRECTORY '/Jon/folder_name' SELECT * FROM table_name;

现在使用external table作为其位置创建/Jon/folder_name/000000_0,然后执行选择。像这样:

hive> CREATE EXTERNAL TABLE table_name2(id INT, name STRING) LOCATION '/Jon/folder_name/000000_0';

然后,

hive> select count(*) from table_name2;

HTH