gpt4 book ai didi

hadoop - 从绝对文件路径的逗号分隔列表配置单元加载数据

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

引用以下配置单元命令:

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]

我可以给出一个逗号分隔的绝对文件路径列表吗?
LOAD DATA INPATH 'hdfs://foo/bar1,hdfs://foo/bar2' INTO TABLE foo1

我正在寻找的实际用例:

使用时

<datasets>
<dataset name="input1">
<uri-template>hdfs://foo/bar/a</uri-template>
</dataset>
</datasets>
<input-events>
<data-in name="coordInput1" dataset="input1">
<start-instance>${coord:current(-23)}</start-instance>
<end-instance>${coord:current(0)}</end-instance>
</data-in>
</input-events>
<action>
<workflow>
...
<configuration>
<property>
<name>input_files</name>
<value>${coord:dataIn('coordInput1')}</value>
</property>
</configuration>
</workflow>
</action>

在 coordinator.xml 中,假设有一组合格的 24 个 hdfs 位置作为我的输入。如果我的配置单元查询是从所有这些位置将数据加载到表中,我想像这样使用它:创建表表 1(col1 字符串)位置(${input_files});

但是,这在配置单元中无法正常工作。假设:input_files 解析为 hdfs://foo/bar/1,hdfs://foo/bar/2,hdfs://foo/bar/3 结果证明这是无效的 hive 中的位置。

我理解的实现这一点的唯一方法是,运行一个将 input_files 作为输入的 java 映射器,并输出一个运行

的动态配置单元脚本
`LOAD DATA INPATH 'hdfs://foo/bar/1' INTO TABLE foo1`
`LOAD DATA INPATH 'hdfs://foo/bar/2' INTO TABLE foo1`

分别。

所以,最后,我的问题是,当我能够解析我感兴趣的整个数据集时,我可以将其用作 ${coord:dataIn('coordInput1')},我不能利用它来配置单元,避免单独的 LOAD DATA..ALTER TABLE ADD PARTITIONS.. 语句吗?

最佳答案

使用 java Action 节点来完成这个逻辑。您可以使用逗号拆分 input_files,并使用 hive jdbc 连接在所有输入位置的循环中执行 hive 命令。

关于hadoop - 从绝对文件路径的逗号分隔列表配置单元加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12349614/

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