在oozie hive2操作中,我尝试从压缩的.zip文件中的.csv文件加载配置单元表。为了通过oozie配置单元操作工作流读取*.zip中的文件,配置单元操作提供了“archive”标记元素。只需在“archive”标记元素中声明zip文件,如下所示,
<archive>${ZipfilePath}#unzipFile</archive>
“archive”元素中“#”之后的引用是用于读取解压缩文件的临时文件夹的名称。可以通过引用路径“unzipfile/.csv”来读取.zip中的.csv文件
问题是-配置单元操作无法找到存档元素中引用的路径。默认情况下,配置单元在“”中查找解压缩文件夹hdfs://nameservice1/user/hive/“位置和错误为”
"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"
但是,我能够使用shell操作成功地测试'archive'标记,并将文件作为
cat unzipFile/file.csv
2条答案
按热度按时间1zmg4dgp1#
由于oozie配置单元操作在集群中运行,而不是在边缘节点上运行,因此所有支持文件都需要位于hdfs路径中。也就是说,配置单元操作本身将在运行时由oozie选择的任何节点中运行。将文件上载到hdfs路径,以便可以从集群中的任何节点访问它
xriantvc2#
shell操作将文件本地复制到运行脚本的容器中。这就是为什么它能起作用。
配置单元2:
一旦文件被移动到容器中,就必须使用local。