我正在使用Hadoop Spark开始一个项目。我将在Scala中发展 我从零开始创建项目,我想知道如何处理属性。
我来自Java背景,我使用.properties文件并在开始时加载它们。然后我有一个用于访问我的属性的不同值的类。
这在Scala中也是一个很好的做法吗?
尝试使用谷歌搜索,但没有任何与此相关的内容。
答案 0 :(得分:2)
您可以在scala中读取与Java
类似的属性文件import scala.io.Source.fromUrl
val reader = fromURL(getClass.getResource("conf/fp.properties")).bufferedReader()
您可以在Scala Standard Library I/O
了解有关I / O包的更多信息如果您希望提供火花属性,那么有不同的方法可以做到这一点,例如:在你提交火花工作时提供它们。
希望这有帮助。
答案 1 :(得分:1)
我们这样做:
conf
被复制到System.properties config-file
用于读取配置文件(使用spark上下文可以从S3 / HDFS读取自定义代码路径以便能够从jar资源中读取)withFallback
机制合并来自资源和读取文件的默认配置。顺序很重要,因为我们希望typesafe使用(2)中的值来覆盖文件中的thoses。答案 2 :(得分:1)
确定Spark的属性有三种方法:
Spark Propertis
位于SparkConf
original spec:
Spark属性控制大多数应用程序设置并进行配置 每个申请单独分开。可以直接设置这些属性 在SparkConf上传递给你的SparkContext。
Dynamically Loading Spark Properties
original spec,它避免了对SparkConf中的某些配置进行硬编码:
./ bin / spark-submit --name“我的应用程序”--master local [*] --conf spark.eventLog.enabled = false --conf“spark.executor.extraJavaOptions = -XX:+ PrintGCDetails -XX:+ PrintGCTimeStamps”myApp.jar
覆盖spark-defaults.conf
- 默认Spark属性文件 - original spec
我按优先级描述了属性 - SparkConf
具有最高优先级,spark-conf
具有最低优先级。有关详细信息,请查看this post
如果您想将所有房产存储在一个地方,只需Typesafe Config。 Typesafe Config摆脱了使用输入流来读取文件,它在scala应用程序中被广泛使用。