使用分区创建外部

时间:2012-01-31 20:14:23

标签: hadoop hive

我在hadoop中有数据,并使用分区(日期和小时)创建了一个外部表。表创建很好,但是当我尝试查询数据时,我没有得到任何结果。

Hadoop文件路径 - > /test/dt=2012-01-30/hr=17/testdata*

创建声明 - >

CREATE EXTERNAL TABLE test(adate STRING,
remoteIp STRING,
url STRING,
type STRING,
ip STRING,
useragent STRING)
COMMENT 'This is the Test view table'
PARTITIONED BY(dt STRING, hr STRING)
ROW FORMAT SERDE 'com.test.serde.ValidRawDataSerDe'
STORED AS SEQUENCEFILE
LOCATION '/test';

表格创建消息 - >

OK
Time taken: 0.078 seconds

当我使用选择查询时,我没有得到结果 - >

hive> select * from test;
OK
Time taken: 0.052 seconds
hive> select * from test where dt='2008-08-09' and hr='17';  
OK

我在这里遗漏了什么。请帮忙。

2 个答案:

答案 0 :(得分:5)

是。您需要通知Hive有关新分区的信息。要使用的命令是ALTER TABLE ... ADD PARTITION。

答案 1 :(得分:1)

通过HIVE JDBC创建外部表并不反映在配置单元数据仓库中。

通过Hive JDBC创建表后,stmt.executeQuery("create external table trial5 (TOPIC STRING) row format delimited fields terminated by '' STORED as TEXTFILE LOCATION '/user/ranjitha/trial5'");,

我尝试从这个文件中检索,没有返回任何内容......

在此链接中: https://groups.google.com/a/cloudera.org/forum/?fromgroups#!topic/cdh-user/YTekdFtbelE,它表示使用HIVE JDBC无法创建外部表..

如果有人可以指导我以上,那将会非常有帮助。

谢谢!