Hive表没有从外部文件中检索行

时间:2014-08-19 18:35:21

标签: hadoop hive hiveql

我有一个名为sample.txt的文本文件。该文件看起来像: abc,23,M def,25,F efg,25,F

我正在尝试使用以下命令在配置单元中创建表:

CREATE EXTERNAL TABLE ppldb(name string, age int,gender string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS TEXTFILE LOCATION '/path/to/sample.txt';

但数据并没有进入表格。当我运行查询时: select count(*) from ppldb 我在输出中得到0。

数据无法加载到表中的原因是什么?

2 个答案:

答案 0 :(得分:5)

Hive中外部表中的位置应为 HDFS目录,而不是文件的完整路径。 如果该目录不存在,那么我们将自动创建我们提供的位置。在您的情况下, /path/to/sample.txt 被视为目录

因此,只需在 LOCATION 中输入 / path / to / ,并将sample.txt文件保留在目录中。它会起作用。

希望它有帮助...... !!!

答案 1 :(得分:1)

LOCATION子句指示将存储表的位置,而不是从中检索数据的位置。将samples.txt文件移动到类似

之类的hdfs之后
hdfs dfs -copyFromLocal ~/samples.txt /user/tables/

您可以使用

将数据加载到配置单元中的表中
create table temp(name string, age int, gender string)
row format delimited fields terminated by ','
stored as textfile;

load data inpath '/user/tables/samples.txt' into table temp;

那应该有用