scalaspark中属性的最佳实践

uxhixvfz  于 2021-05-29  发布在  Hadoop
关注(0)|答案(3)|浏览(384)

我正在用hadoop spark启动一个项目。我将在斯卡拉发展。
我从零开始创建这个项目,我想知道如何处理属性。
我来自java背景,在那里我使用.properties文件并从一开始就加载它们。然后我有一个类用来访问我的属性的不同值。
这在scala中也是一个好的实践吗?
我试过用谷歌搜索,但没有任何相关信息。

uqcuzwp8

uqcuzwp81#

有三种方法可以确定spark的属性: Spark PropertisSparkConf 原始规格:
spark属性控制大多数应用程序设置,并为每个应用程序分别配置。这些属性可以直接在传递给sparkcontext的sparkconf上设置。 Dynamically Loading Spark Properties 最初的规范,它避免了在sparkconf中硬编码某些配置:
./bin/spark submit--name“我的应用”--master local[*]--conf spark.eventlog.enabled=false--conf“spark.executor.extrajavaoptions=-xx:+printgcdetails-xx:+printgtimestamps”myapp.jar
覆盖 spark-defaults.conf  — 默认spark特性文件-原始等级库
我按优先级描述了房产- SparkConf 具有最高优先级和 spark-conf 具有最低优先级。更多详情请查看此帖子
如果要将所有属性存储在同一个位置,只需键入safe config。typesafe配置不再使用输入流读取文件,它在scala应用程序中被广泛使用。

kd3sttzy

kd3sttzy2#

您可以在类似于java的scala中读取属性文件

import scala.io.Source.fromUrl
val reader = fromURL(getClass.getResource("conf/fp.properties")).bufferedReader()

您可以在scala标准库i/o中阅读更多关于i/o包的信息
如果您希望提供spark属性,则有不同的方法,例如在提交spark作业时提供。
希望这有帮助。

s5a0g9ez

s5a0g9ez3#

我们要做的是:
scopt.optionparser来分析命令行参数。
键/值参数 conf 复制到system.properties
命令行参数 config-file 用于读取配置文件(使用spark context从s3/hdfs读取,使用自定义代码路径从jar资源读取)
使用com.typesafe.config.configfactory解析的配置文件。
来自资源和读取文件的默认配置使用 withFallback 机制。顺序很重要,因为我们希望typesafe使用(2)中的值来覆盖文件中的那些值。

相关问题