我的Spark工作每30分钟运行一次,并将输出写入hdfs - (/tmp/data/1497567600000)
。我在集群中持续运行这项工作。
如何在此数据之上创建Hive表?我在StackOverFlow中看到了一个解决方案,它在日期字段分区的数据之上创建了一个hive表。就像,
CREATE EXTERNAL TABLE `mydb.mytable`
(`col1` string,
`col2` decimal(38,0),
`create_date` timestamp,
`update_date` timestamp)
PARTITIONED BY (`my_date` string)
STORED AS ORC
LOCATION '/tmp/out/'
并且解决方案建议将表改为
ALTER TABLE mydb.mytable ADD PARTITION (my_date=20160101) LOCATION '/tmp/out/20160101'
但是,就我而言,我不知道如何编写输出目录,因此我显然无法按照上面的建议创建分区。
如何处理这种情况,输出目录是以时间戳为基础随机写入的,而不是格式(/tmp/data/timestamp= 1497567600000
)?
如何让Hive选择目录/tmp/data
下的数据?
答案 0 :(得分:1)
我可以建议两种解决方案:
/tmp/data/1
,/tmp/data/2
),每小时添加Hive分区,然后只写入相关分区hadoop fs -ls /tmp/data
hive -e 'show partitions table;'
ALTER TABLE mydb.mytable ADD PARTITION (my_date=20160101) LOCATION '/tmp/out/20160101'