gpt4 book ai didi

hadoop - Oozie pyspark 工作

转载 作者:可可西里 更新时间:2023-11-01 15:10:03 26 4
gpt4 key购买 nike

我的工作流程非常简单。

<workflow-app name="testSparkjob" xmlns="uri:oozie:workflow:0.5">
<start to="testJob"/>

<action name="testJob">
<spark xmlns="uri:oozie:spark-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.compress.map.output</name>
<value>true</value>
</property>
</configuration>
<master>local[*]</master>
<name>Spark Example</name>
<jar>mapping.py</jar>
<spark-opts>--executor-memory 1G --num-executors 3
--executor-cores 1 </spark-opts>
<arg>argument1</arg>
<arg>argument2</arg>
</spark>
<ok to="end"/>
<error to="killAction"/>
</action>
<kill name="killAction">
<message>"Killed job due to error"</message>
</kill>
<end name="end"/>
</workflow-app>

Spark 脚本几乎什么都不做:

if len(sys.argv) < 2:
print('You must pass 2 parameters ')
#just for testing, later will be discarded, sys.exit(1) will be used.")
ext = 'testArgA'
int = 'testArgB'
#sys.exit(1)
else:
print('arguments accepted')
ext = sys.argv[1]
int = sys.argv[2]

脚本位于 hdfs 上,与 workflow.xml 位于同一文件夹中。

运行工作流程时出现以下错误

Launcher ERROR, reason: Main class 
[org.apache.oozie.action.hadoop.SparkMain], exit code [2]

我认为这是权限问题,所以我将 hdfs 文件夹 -chmod 777 和我的本地文件夹也设置为 chmod 777我正在使用 Spark 1.6。当我通过 spark-submit 运行脚本时,一切都很好(甚至更复杂的脚本读取/写入 hdfs 或配置单元)。

编辑:我试过 this

<action name="forceLoadFromLocal2hdfs">
<shell xmlns="uri:oozie:shell-action:0.3">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<exec>driver-script.sh</exec>
<!-- single -->
<argument>s</argument>
<!-- py script -->
<argument>load_local_2_hdfs.py</argument>
<!-- local file to be moved-->
<argument>localFilePath</argument>
<!-- hdfs destination folder, be aware of, script is deleting existing folder! -->
<argument>hdfsPath</argument>
<file>${workflowRoot}driver-script.sh</file>
<file>${workflowRoot}load_local_2_hdfs.py</file>
</shell>
<ok to="end"/>
<error to="killAction"/>

工作流成功,但文件未复制到 hdfs。没有错误。该脚本本身确实可以工作。更多 here .

最佳答案

不幸的是,Oozie Spark 操作仅支持 Java 工件,因此您必须指定主类(该错误消息很难解释)。所以你有两个选择:

  1. 将代码重写为 Java/Scala
  2. 使用自定义操作或脚本 this (我没有测试)

关于hadoop - Oozie pyspark 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45307229/

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