gpt4 book ai didi

hadoop - 插入 Hive 表时如何从 HDFS 中选择动态文件名

转载 作者:可可西里 更新时间:2023-11-01 16:11:02 26 4
gpt4 key购买 nike

我有一个 Hive 表。现在我需要编写一个工作流程,每天工作都会在某个位置搜索文件 -

/data/data_YYYY-mm-dd.csv
like
/data/data_2015-07-07.csv
/data/data_2015-07-08.csv
...

因此每天工作流都会自动选择文件名并将数据加载到 Hive 表(MyTable)中。

我正在编写如下加载脚本-在路径中加载数据“/data/${filepath}”覆盖到表 MyTable。

现在,在运行与普通配置单元作业相同的同时,我可以将文件路径设置为 data_2015-07-07.csv ,但如何在 Oozie 协调器中执行此操作,以便它自动选择名称为日期的路径。

我尝试从 Oozie 协调器设置工作流参数-

clicklog_${YYYY}-{MONTH}-{DAY}.csv

最佳答案

在查看 Oozie 协调器文档后,我找到了解决方案。它简单明了,无论您已经在 Hive Workflow 中添加了什么配置,都将被忽略,OOzie 协调器将填充它们-

所以我的 Hive 工作流程是 -

<workflow-app name="Workflow__" xmlns="uri:oozie:workflow:0.5">
<start to="hive-cfc5"/>
<kill name="Kill">
<message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<action name="hive-cfc5">
<hive xmlns="uri:oozie:hive-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<job-xml>/user/hive-site.xml</job-xml>
<script>/user/sub/create.hql</script>
</hive>
<ok to="hive-2ade"/>
<error to="Kill"/>
</action>
<action name="hive-2ade">
<hive xmlns="uri:oozie:hive-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<job-xml>/user/hive-site.xml</job-xml>
<script>/user/sub/load_query.hql</script>
<param>filepath=test_2015-06-26.csv</param>
</hive>
<ok to="End"/>
<error to="Kill"/>
</action>
<end name="End"/>
</workflow-app>

现在我在我的 oozie 协调器中安排了相同的工作流程-

只需设置文件路径参数-

test_${YYYY}-{MONTH}-{DAY}.csv

<coordinator-app name="My_Coordinator"
frequency="*/60 * * * *"
start="${start_date}" end="${end_date}" timezone="America/Los_Angeles"
xmlns="uri:oozie:coordinator:0.2"
>
<controls>
<execution>FIFO</execution>
</controls>
<action>
<workflow>
<app-path>${wf_application_path}</app-path>
<configuration>
<property>
<name>filepath</name>
<value>test_${YYYY}-{MONTH}-{DAY}.csv</value>
</property>
<property>
<name>oozie.use.system.libpath</name>
<value>True</value>
</property>
<property>
<name>start_date</name>
<value>2015-07-07T14:50Z</value>
</property>
<property>
<name>end_date</name>
<value>2015-07-14T07:23Z</value>
</property>
</configuration>
</workflow>
</action>
</coordinator-app>

然后我使用 crone 作业每 60 分钟运行一次相同的作业 (*/60 * * * *) 以检查上述任何模式文件是否可用

关于hadoop - 插入 Hive 表时如何从 HDFS 中选择动态文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31271526/

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