2012-01-31 115 views
4

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

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

CREATE语句 - >

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 

当我使用select查询即时消息没有得到结果 - >

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

我在这里失去了什么。请帮忙。

回答

5

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

+0

谢谢奥拉夫。你能举个例子说明上述说明如何做到这一点。 – Balaji 2012-01-31 21:32:55

+0

我得到了查询奥拉夫。有没有办法克服“ALTER TABLE ADD PARTITION”。因为我需要总结小时和4小时的数据。我不想随时改变添加分区的表格:-( – Balaji 2012-01-31 21:48:14

+0

@Balaji:我提到过,这可以/应该以编程方式完成,例如通过Hive JDBC? – Olaf 2012-01-31 22:27:57

1

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

通过蜂巢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,它说,外部表的建立不可能使用JDBC HIVE ..

这将是,如果有人能指导我上面真的很有帮助..

谢谢!

+0

你能尝试使用JDBC执行两个操作 - 1)创建简单表(NO External)2)从本地inpath加载数据。 https://cwiki.apache.org/Hive/languagemanual-dml.html#LanguageManualDML-Loadingfilesintotables – Balaji 2012-10-17 18:46:28