gpt4 book ai didi

hadoop - hive中如何自动加载数据

转载 作者:可可西里 更新时间:2023-11-01 14:19:00 37 4
gpt4 key购买 nike

最近想把日志文件加载到hive表中,想要一个可以从某个目录读取数据并自动加载到hive中的工具。这个目录可能包含很多子目录,比如某个目录是'/log',子目录是'/log/20130115'、'/log/20130116'、'/log/201301017'。有没有一些ETL工具可以实现这样的功能:一旦新数据存储在某个目录下,该工具可以自动检测到这些数据并将它们加载到hive表中。有没有这样的工具,我必须自己写脚本吗?

最佳答案

您可以使用 Hive 外部表并按天对表进行分区轻松地做到这一点。例如,创建您的表:

create external table mytable(...) 
partitioned by (day string)
location '/user/hive/warehouse/mytable';

这实际上会在 Metastore 中创建一个空表,并使其指向 /user/hive/warehouse/mytable

然后您可以使用 key=value 格式将数据加载到此目录中,其中 key 是您的分区名称(此处为“day”),value 是你的分区。例如:

hadoop fs -put /log/20130115 /user/hive/warehouse/mytable/day=20130115

一旦你的数据被加载到那里,它就在 HDFS 目录中,但是 Hive 元存储还不知道它属于表,所以你可以这样添加它:

alter table mytable add partition(day='20130115');

您应该一切顺利,元存储将使用您的新分区进行更新,您现在可以在该分区上查询您的表。

这对于脚本来说应该是微不足道的,您可以创建一个每天运行一次的 cron 作业,它将按顺序执行这些命令,并使用 date 命令找到要加载的分区,例如连续执行此操作命令:

hadoop fs -test /log/`date +%Y%m%d`

检查 $? 是否等于 0 会告诉您文件是否在此处,如果在,您可以传输它并按上述方式添加分区。

关于hadoop - hive中如何自动加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14373375/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com