在 Spark on Yarn 中使用类型安全配置

2023-12-20

我有一个从配置文件读取数据的 Spark 作业。该文件是类型安全的配置文件。

读取配置的代码如下所示:

ConfigFactory.load().getConfig("com.mycompany")

现在我不将 application.conf 组装为我的 uber jar 的一部分,因为我想将该文件作为外部文件传递

我想使用的外部 application.conf 的内容如下所示:

com.mycompany {
  //configurations my program needs
}

此 application.conf 文件存在于我的本地计算机文件系统上(而不是 HDFS 上)

我正在使用 Spark 1.6.1 和 Yarn

这就是我的 Spark-submit 命令的样子:

LOG4J_FULL_PATH=/log4j-path
ROOT_DIR=/application.conf-path

    /opt/deploy/spark/bin/spark-submit \
    --class com.mycompany.Main \
    --master yarn \
    --deploy-mode cluster \
    --files $ROOT_DIR/application.conf \
    --files $LOG4J_FULL_PATH/log4j.xml \
    --conf spark.executor.extraClassPath="-Dconfig.file=file:application.conf" \
    --driver-class-path $ROOT_DIR/application.conf \
    --verbose \
    /opt/deploy/lal-ml.jar

我收到的异常是:

2016-11-09 12:32:14 ERROR ApplicationMaster:95 - User class threw exception: com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'com'
com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'com'
    at com.typesafe.config.impl.SimpleConfig.findKey(SimpleConfig.java:124)
    at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:147)
    at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:159)
    at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:164)
    at com.typesafe.config.impl.SimpleConfig.getObject(SimpleConfig.java:218)
    at com.typesafe.config.impl.SimpleConfig.getConfig(SimpleConfig.java:224)
    at com.typesafe.config.impl.SimpleConfig.getConfig(SimpleConfig.java:33)
    at com.mycompany.Main$.main(Main.scala:36)
    at com.mycompany.Main.main(Main.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:542)

所以我的问题是:有人知道如何使用spark-submit和yarn加载位于本地计算机上的外部类型安全application.conf文件吗?

我尝试遵循中的一些解决方案如何将位于 HDFS 上的类型安全配置文件添加到 Spark-Submit(集群模式)? https://stackoverflow.com/questions/35509510/how-to-add-a-typesafe-config-file-which-is-located-on-hdfs-to-spark-submit-clus and in Spark 中的类型安全配置 https://stackoverflow.com/questions/38068927/typesafe-config-in-spark并且也在如何将-D参数或环境变量传递给Spark作业? https://stackoverflow.com/questions/28166667/how-to-pass-d-parameter-or-environment-variable-to-spark-job但没有任何作用

我将不胜感激任何解决这个问题的方向

提前致谢


因此,通过深入研究 Spark 1.6.1 源代码,我找到了解决方案。

当使用集群模式提交到yarn时,为了让应用程序使用log4j和application.conf,您需要执行以下步骤:

  • 当像我一样传递多个文件时,同时传递 application.conf 和 log4j.xml 文件,您需要仅使用一行来提交它们,如下所示:--files "$ROOT_DIR/application.conf,$LOG4J_FULL_PATH/log4j.xml"(用逗号分隔)
  • application.conf 就是这样。 application.conf 不需要 extraJavaOpts (如我的问题中所写)。问题是 Spark 仅使用传递的最后一个 --files 参数,这就是传递 log4j 的原因。为了使用 log4j.xml 我还必须采取以下步骤
  • 在 Spark 提交中添加另一行,如下所示:--conf spark.driver.extraJavaOptions="-Dlog4j.configuration=file:log4j.xml"- 请注意,一旦使用 --files 传递它,您就可以仅引用文件名,而无需任何路径

注意:我还没有尝试过,但从我所看到的情况来看,如果您尝试在客户端模式下运行它,我认为spark.driver.extraJavaOptions该行应重命名为 driver-java-options 之类的内容 就是这样。如此简单,我希望这些事情能得到更好的记录。我希望这个答案能帮助别人

Cheers

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Spark on Yarn 中使用类型安全配置 的相关文章

  • Scala 相当于 Java 的 Number

    我正在尝试为数值域类型构建类型层次结构 例如AYear is an Int 这是一个Number a Percentage is a Double 这是一个Number等等 我需要层次结构以便我可以调用toInt or toDouble关于
  • 最小重复子串

    我正在看 Perl代码高尔夫页面 http www perlmonks org node id 82878 不要问为什么 并遇到了这个 第 3 洞 最小重复图案 编写一个子例程 它接受一个字符串 该字符串可能包含 重复模式 并返回最小的重复
  • 使用原始类型模拟案例类

    考虑以下类型结构 trait HasId T def id T case class Entity id Long extends HasId Long 比方说 我们想在一些测试中模拟实体类 val entityMock mock Enti
  • 如何发现 Scala 远程 Actor 已死亡?

    在 Scala 中 当另一个 远程 actor 终止时 可以通过设置 trapExit 标志并以第二个 actor 作为参数调用 link 方法来通知一个 actor 在这种情况下 当远程参与者通过调用 exit 结束其工作时 第一个参与者
  • 对多列应用窗口函数

    我想执行窗口函数 具体为移动平均值 但针对数据帧的所有列 我可以这样做 from pyspark sql import SparkSession functions as func df df select func avg df col
  • Spark - 如何在本地运行独立集群

    是否有可能运行Spark独立集群仅在一台机器上进行本地操作 这与仅在本地开发作业基本上不同 即local 到目前为止 我正在运行 2 个不同的虚拟机来构建集群 如果我可以在同一台机器上运行一个独立的集群 该怎么办 例如三个不同的 JVM 正
  • 任务和分区之间有什么关系?

    我能说 么 Spark任务的数量等于Spark分区的数量吗 执行器运行一次 执行器内部的批处理 等于一个任务吗 每个任务只产生一个分区 1 的重复 并行度或可以同时运行的任务数量由以下公式设置 Executor实例的数量 配置 每个执行器的
  • 使用 Spark DataFrame 获取组后所有组的 TopN

    我有一个 Spark SQL DataFrame user1 item1 rating1 user1 item2 rating2 user1 item3 rating3 user2 item1 rating4 如何按用户分组然后返回TopN
  • 错误:协变类型 A 出现在逆变位置

    我试图写一个不可变的Matrix A 班级 我希望该类是协变的A但是当我把 在 前面A编译器开始抱怨类中的某些操作 以下是我的相关子集Matrix类 实际类比以下子集大 5 倍左右 class Matrix A private val co
  • Scala:如何在超类上实现克隆方法,并在子类中使用它?

    我可能会以错误的方式处理这个问题 但我想要一个像这样的对象 class MyDataStructure def myClone val clone new MyDataStructure do stuff to make clone the
  • Scala 模式匹配变量绑定

    为什么提取器返回时不能以 样式绑定变量Option
  • Spark Scala 将列从一个数据帧复制到另一个数据帧

    我有一个原始数据框的修改版本 我在其上进行了聚类 现在我想将预测列恢复为原始 DF 索引没问题 因此匹配 我该怎么做 使用这段代码我得到一个错误 println Predicted dfWithOutput show println Ori
  • Scala 中的 Shapeless 结构编程:如何正确使用 SYB 实现?

    我想使用SYB http research microsoft com en us um people simonpj papers hmap 实施于无形图书馆 https github com milessabin shapeless编写
  • 玩:将表单字段绑定到双精度型?

    也许我只是忽略了一些明显的事情 但我无法弄清楚如何将表单字段绑定到 Play 控制器中的双精度型 例如 假设这是我的模型 case class SavingsGoal timeframeInMonths Option Int amount
  • 如何获取 Kafka 偏移量以进行结构化查询以进行手动且可靠的偏移量管理?

    Spark 2 2引入了Kafka的结构化流源 据我了解 它依赖 HDFS 检查点目录来存储偏移量并保证 恰好一次 消息传递 但是旧码头 比如https blog cloudera com blog 2017 06 offset manag
  • Scala 解析器组合器的运算符优先级

    我正在研究需要考虑运算符优先级的解析逻辑 我的需求并不太复杂 首先 我需要乘法和除法比加法和减法具有更高的优先级 例如 1 2 3 应视为 1 2 3 这是一个简单的例子 但你明白了 我需要将更多自定义标记添加到优先级逻辑中 我可以根据此处
  • 如何在hadoop mapreduce/yarn中设置VCORES?

    以下是我的配置 mapred site xml map mb 4096 opts Xmx3072m reduce mb 8192 opts Xmx6144m yarn site xml resource memory mb 40GB min
  • 在 IntelliJ 中运行 Spark 字数统计

    我花了几个小时浏览 You Tube 视频和教程 试图了解如何在 Scala 中运行 Spark 字数统计程序 并将其转换为 jar 文件 我现在完全糊涂了 我运行了 Hello World 并且了解了如何在 Apache spark sp
  • 如何在 apache Spark 作业中执行阻塞 IO?

    如果当我遍历 RDD 时 我需要通过调用外部 阻塞 服务来计算数据集中的值怎么办 您认为如何才能实现这一目标 值 Future RDD Double Future sequence tasks 我尝试创建一个 Futures 列表 但由于
  • Spark 执行器登录 YARN

    我正在 Cloudera 集群上以 YARN 客户端模式启动分布式 Spark 应用程序 一段时间后 我在 Cloudera Manager 上看到一些错误 一些执行者会断开连接 并且这种情况会系统性地发生 我想调试该问题 但 YARN 未

随机推荐

  • addEventListener 匿名函数中的 Javascript 变量范围

    单击每个 div 时 如果单击了 div 1 则应发出警报 1 如果单击了 div 2 则应发出警报 5 我试图使此代码尽可能简单 因为这是在更大的应用程序中需要的
  • 如何在各种环境下使用和配置omniauth与yahoo、google、facebook策略?

    我正在开发一个 Rails 3 2 应用程序 该应用程序将允许用户向多个提供商进行身份验证 雅虎 谷歌 Facebook 和 或 Twitter 我们正在使用omniauth 虽然我了解基本工作流程 但我找不到一个包容性文档来说明应如何配置
  • 重写骨干模型中的 fetch() 方法

    我想重写 Backbone 模型中的默认 fetch 方法 从而仅在需要时调用它 像这样的东西 Account Check Backbone Model extend model Account Item url Settings Url
  • CSS中宽度除以高度得到屏幕比例

    我尝试获取屏幕的比 例 这是我尝试过的CSS 但它不起作用 height calc 50vw calc 1vw 1vh 3 如何获得屏幕宽度除以屏幕高度 Thanks First of all calc is not nestable 1
  • Makefile 找不到 macports 安装的 boost 库

    我刚刚使用 macports 安装了 boost 1 42 0sudo port install boost 一切都很好 现在我有一个项目 我正在尝试使用 makefile 构建 一切都构建得很好 直到涉及到需要 boost 库的文件为止
  • 如何在远程 ssh 连接中本地绘制 R 绘图?

    我目前通过 ssh 连接到一台远程计算机 我在 VIM 中设置了 R 我两边都用ubuntu 当我尝试从 R 绘制某些内容时 它将出现在远程计算机而不是本地计算机上 有什么办法可以在本地制作 R 绘图吗 您可以将 SSH 与 X切换以将图形
  • DIV 左侧垂直滚动条

    是否可以用css将DIV的垂直滚动条放在div的左侧 jscript 怎么样 我有一个简单的用例 所以选择了一个简单的 css 解决方案 div style height 250px div style padding 3px Conten
  • 使用 vanilla JS 添加 CSS 规则的最短方法

    我正在开发一个库 试图将其保持在 1KB 以下 我已经非常接近我的极限了 我需要添加一个 CSS 规则来控制显示隐藏行为 hidden display none important HTML 页面没有任何样式标签 这将是我唯一需要的规则 我
  • 无法从 Windows 注册表运行 vbs 文件

    我有一个调用 vbscript 文件的注册表项 如下所示 右键单击 cur 文件选择 更改光标 选项时将触发该注册表项 C Program Files Cursor Manager CustomCursor vbs 1 2 下面是vbs文件
  • 如何减少 Eclipse Ganymede 的内存使用?

    我使用最新的 Eclipse Ganymede 版本 特别是针对 Java EE 和 Web 开发人员的发行版 我安装了一些额外的插件 例如 Subclipse Spring FindBugs 并删除了所有 Mylyn 插件 我在 Ecli
  • 使用继承与接口的装饰器设计模式

    我想使用继承来实现装饰器设计模式 Decorator extends Component 因为我需要访问组件类的受保护字段 方法 问题在于 Component 类代表一种算法 它在构造时执行一些预处理并保存大量数据 现在 每次装饰组件时 我
  • 如何设置与单击一次应用程序的文件关联?

    我有一个点击一次的应用程序 我有一个关联文件 用于存储应用程序的数据 当用户单击这些文件之一时 我希望它打开单击一次应用程序并加载文件 我可以在发布中设置文件关联 图标和名称设置正确 单击文件将打开应用程序 但应用程序似乎没有传递文件的路径
  • 如果从 C# 代码调用,则捕获 EXE 文件中的错误

    我正在从 C 代码运行 exe 文件 由于某些原因 该 exe 文件中出现错误 它一直等待并最终给出弹出错误 abc exe已停止工作 等 但它不退出 The below code is calling it successfully pu
  • NetworkX:在Python中连接两个独立图的节点

    这个问题是关于尝试建模相互依存的网络 https en wikipedia org wiki Interdependent networks与 NetworkX 一起 有专用的包 例如Pymnet http people maths ox
  • node.js - 向子进程发送快捷键

    我的程序生成 ssh 作为子进程 连接到服务器 然后能够写入流并读取其输出 这一切都很好 当我将 ls 写入进程流时 我会得到文件列表 但现在 我想发送此进程的快捷键 以便我可以中止 ssh 会话中正在运行的进程 我知道这也可以通过流来完成
  • 如何在OpenCV中将16位图像转换为32位图像?

    我是 OpenCV 新手 我的程序读取 16 位无符号整数的图像数据 我需要将图像数据乘以 16 位无符号整数的增益 因此 生成的数据应保存在 32 位图像文件中 我尝试了以下操作 但得到了 8 位全白图像 请帮忙 Mat inputDat
  • 无法读取.net core 2.1中的用户机密

    我在尝试读取用户机密时遇到问题 我在startup cs中的代码如下 public Startup IHostingEnvironment env var builder new ConfigurationBuilder SetBasePa
  • 当受管节点是 Windows 主机时如何查找“env”?

    我需要获取 Windows 路径变量 UserProfile 进入 Ansible 剧本 例如 env USERPROFILE 如果我的受管节点是 Linux 主机 我想像 vars wPath lookup env USERPROFILE
  • 函数语句与函数表达式奇怪的行为

    var a function b console log typeof b gives undefined console log typeof a gives function 为什么两个输出有差异 我理解函数表达式和函数语句之间的区别
  • 在 Spark on Yarn 中使用类型安全配置

    我有一个从配置文件读取数据的 Spark 作业 该文件是类型安全的配置文件 读取配置的代码如下所示 ConfigFactory load getConfig com mycompany 现在我不将 application conf 组装为我