我正在尝试通过以下链接关注Twitter数据教程来学习Hive。 https://github.com/cloudera/cdh-twitter-example/
我已经成功安装并配置了hadoop和hive,并测试了简单的文本文件加载到hive表中。到目前为止一切顺利。
然而,即使思想文件存在于hdfs中,外部表也没有显示任何内容。
我使用以下代码创建表格。
CREATE EXTERNAL TABLE (
...
Columns ....
...
)
PARTITIONED BY (datehour INT)
ROW FORMAT SERDE 'com.cloudera.hive.serde.JSONSerDe'
LOCATION '/user/flume/tweets';
我认为问题出在哪里就是我的hdfs中的文件夹结构.. 它目前跟随年/月/日/小时/如下。
/user
-- /flume
-- /tweets
-- /2015
-- 04
-- 01
-- 13
-- 14
-- 02
-- 15
-- 16
在Hive中创建外部表时,有没有办法为此文件夹结构正确设置分区?
先谢谢你的帮助......
答案 0 :(得分:1)
您必须将分区添加到表中。
ADD JAR your-serde-jar-file-path.jar
ALTER TABLE tweets ADD IF NOT EXISTS PARTITION (datehour = 2015040113) LOCATION '/user/flume/tweets/2015/04/01/13';
- 你必须通过datehour和partionpath表单oozie cord文件。
ADD JAR ${JSON_SERDE};
ALTER TABLE tweets ADD IF NOT EXISTS PARTITION (datehour ${DATEHOUR}) LOCATION '${PARTITION_PATH}';
请参考 http://blog.cloudera.com/blog/2013/01/how-to-schedule-recurring-hadoop-jobs-with-apache-oozie/