在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
答案 0 :(得分:0)
由于Oozie hive操作在群集中运行而不在边缘节点上运行,因此所有支持文件都必须位于hdfs路径中。这就是hive动作本身将在Oozie在运行时选择的任何节点中运行。将文件上载到hdfs路径,以便可以从群集中的任何节点访问它
答案 1 :(得分:0)
Shell操作会将文件本地复制到运行脚本的容器中。这就是它起作用的原因。
Hive2:
LOAD DATA [LOCAL] INPATH
将文件移入容器后,您必须使用LOCAL。