You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Oozie时HDFS中JSON文件出现FileNotFoundError问题求助

问题排查与解决方案:Oozie Spark Action 无法找到HDFS上的JSON参数文件

可能的原因及对应解决步骤

1. HDFS路径权限不匹配

  • 检查运行Oozie作业的用户(通常是oozie用户或提交作业的用户)是否拥有该JSON文件的读权限,以及文件所在目录的执行权限。
  • 执行HDFS权限检查命令:
    hdfs dfs -ls /path/to/your/config.json
    hdfs dfs -getfacl /path/to/your/config.json
    
  • 若权限不足,调整权限:
    hdfs dfs -chmod 644 /path/to/your/config.json
    hdfs dfs -chown oozie:oozie /path/to/your/config.json
    

2. workflow.xml中路径配置格式错误

  • 确保配置的HDFS路径是完整绝对路径,需以hdfs://开头(或匹配集群HDFS URI格式,如hdfs://nameservice1/...),禁止使用相对路径。
  • 错误示例:config_file=config.json
  • 正确示例:config_file=hdfs:///user/yourname/config.json

3. Spark脚本读取文件的方式错误

  • 若脚本用本地文件系统方式读取(如open("config.json")),YARN容器会在本地路径查找,导致找不到HDFS上的文件。
  • 两种修正方式:
    • 方式1:用Spark HDFS API读取并解析:
      from pyspark import SparkContext
      import json
      
      sc = SparkContext.getOrCreate()
      json_content = sc.textFile("${config_file}").collect()[0]
      params = json.loads(json_content)
      
    • 方式2:在Spark Action中添加<file>标签,让Oozie自动将HDFS文件分发到容器本地:
      <spark xmlns="uri:oozie:spark-action:0.2">
          <job-tracker>${jobTracker}</job-tracker>
          <name-node>${nameNode}</name-node>
          <prepare>
              <delete path="${output}"/>
          </prepare>
          <master>${master}</master>
          <name>Spark Job</name>
          <class>com.your.package.YourClass</class>
          <jar>hdfs:///path/to/your/spark.jar</jar>
          <file>${config_file}#config.json</file> <!-- 分发到本地并命名为config.json -->
          <arg>${config_file}</arg>
      </spark>
      
      此时脚本可直接读取本地的config.json。

4. Coordinator参数传递缺失或错误

  • 确认coordinator.xml中是否正确将参数传递给Workflow:
    <action>
        <workflow>
            <app-path>${workflowAppPath}</app-path>
            <configuration>
                <property>
                    <name>config_file</name>
                    <value>${config_file}</value>
                </property>
            </configuration>
        </workflow>
    </action>
    
  • 检查Coordinator启动时是否传入了正确的参数值,避免参数被覆盖或未传递。

5. HDFS路径大小写不匹配

  • HDFS区分大小写,确认配置路径与实际文件路径的大小写完全一致(如Config.json和config.json会被视为不同文件)。

内容的提问来源于stack exchange,提问作者Roopanjali Jasrotia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 01:45:31