oozie - 在配置单元操作中使用存档文件

时间:2016-08-26 13:13:23

标签: csv hadoop hive oozie unzip

在Oozie Hive2动作中,我正在尝试从' .csv'加载hive表。压缩文件中存在的文件.zip'文件。为了通过Oozie Hive动作工作流程读取* .zip内的文件,Hive动作提供了' archive'标签元素。只需要在' archive'中声明Zip文件。标签元素如下,

<archive>${ZipfilePath}#unzipFile</archive>

&#39;#&#39;之后的参考在&#39;档案&#39; element是读取解压缩文件的临时文件夹的名称。 .zip中的.csv文件可以通过引用路径&#39; unzipFile /。csv&#39;

来阅读。

问题是 - Hive操作无法找到archive元素中引用的路径。默认情况下,Hive在&#34; hdfs:// nameservice1 / user / hive /&#34;中查找解压缩文件夹。

的位置和错误
"Error: Error while compiling statement: FAILED: SemanticException Line     1:17 Invalid path ''unzipFile/file.csv'': No files matching path hdfs://nameservice1/user/hive/unzipFile/file.csv (state=42000,code=40000"

但是,我能够成功地测试&#39;存档&#39;标签使用shell动作  并且&#39; cat&#39;文件为

cat unzipFile/file.csv

2 个答案:

答案 0 :(得分:0)

由于Oozie hive操作在群集中运行而不在边缘节点上运行,因此所有支持文件都必须位于hdfs路径中。这就是hive动作本身将在Oozie在运行时选择的任何节点中运行。将文件上载到hdfs路径,以便可以从群集中的任何节点访问它

答案 1 :(得分:0)

Shell操作会将文件本地复制到运行脚本的容器中。这就是它起作用的原因。

Hive2:

LOAD DATA [LOCAL] INPATH

将文件移入容器后,您必须使用LOCAL。