我正在构建一个Spark应用程序(当前为1.6.0),在Hue中与Oozie一起在Cloudera上运行。我们想要使用Hue和Oozie,因为运行这些工作的人会更喜欢使用基于浏览器的界面,而不是在Oozie XML配置中进行黑客攻击或在命令行上启动spark-submit。
我已经想出如何通过Hue(3.10)运行基本的Oozie / Spark Action。但是我们希望能够在运行时通过配置文件提供各种非Spark参数,就像使用普通的Scala应用程序一样。我很难找到(a)Oozie会接受的机制,并且(b)Spark会认识到在运行时从指定文件中获取配置参数。
我尝试了各种排列,例如将其作为Hue中Oozie Action“Properties”选项卡中的选项之一:
options "-Dconfig.file=/my/file/location/fubar.conf"
但是Spark作业无法获取配置,或者只是完全失败(日志中没有明显的错误)。
使用spark-submit从命令行以本地模式(即不在Cloudera上)运行Spark代码似乎有效:
spark-submit --class com.example.Sparky --master local[*] \
--driver-java-options "-Dconfig.file=/my/file/location/fubar.conf" \
target/scala-2.11/spark-dummy_2.11-1.0.jar
所以我想我需要找出如何为Cloudera上的Oozie / Spark Action提供等效的运行时配置。
有人知道正确的方法吗?
答案 0 :(得分:0)
事实证明,您可以将选项指定为Oozie Spark Action的Java驱动程序选项。
您可以编辑Spark Action,通过表单初始页面右上角的小齿轮符号设置各种属性。
点击齿轮打开表格的第二页,然后选择"属性"标签
在"选项列表"中,输入与spark-submit示例中相同的Java驱动程序选项:
--driver-java-options "-Dconfig.file=/my/file/location/fubar.conf"
因此,这允许您将属性传递到您的Spark应用程序,否则可能通过您的应用程序配置文件设置。例如,如果您有一个属性" app.fubar.var1",您可以直接通过Java驱动程序选项传递它。
--driver-java-options "-Dapp.fubar.var1=myvalue"
但如果我把它传递给Oozie Spark Action,我仍然无法让我的Spark应用程序识别我的配置文件的位置。