2017-08-28 80 views
1

我开始使用Hadoop Spark进行项目。我将在斯卡拉开发。
我从头开始创建项目,我想知道如何处理属性。ScalaSpark中的属性的最佳实践

我来自Java背景,我使用.properties文件并在开始时加载它们。然后我有一个类用于访问我的属性的不同值。

这是Scala中的一个好习惯吗?

尝试了谷歌搜索,但没有任何与此有关的东西。

+0

这是一个聊天或松懈的问题 - 请参阅http://chat.stackoverflow.com/rooms/127924/apache-spark –

回答

1

在这里,我们做的事:

  1. scopt.OptionParser解析命令行参数。 conf被复制到System.properties
  2. 键/值参数
  3. 命令行参数config-file用于读取配置文件(使用火花上下文,以便能够从S3/HDFS与自定义代码路径读能够从读取jar资源)
  4. 配置文件使用com.typesafe.config.ConfigFactory解析。
  5. 使用withFallback机制将来自资源和读取文件的默认配置组合在一起。顺序很重要,因为我们希望类型安全使用(2)中的值来覆盖文件中的thoses。
2

如果您正在寻找提供再火花性质有不同的方式可以读取性能在Scala中类似的文件到Java

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

你可以阅读更多关于I/O包在Scala Standard Library I/O

这样做的例如在提交火花作业时提供它们。

希望这有助于。

1

有三种方法来确定用于火花性能:

火花属性控制大多数应用程序设置,并且分别为每个应用配置 。这些属性可以直接在SparkConf上设置为 传递给您的SparkContext。

  • Dynamically Loading Spark Propertiesoriginal spec,它避免了硬编码在SparkConf某些配置:

    ./bin/spark-submit --name “我的应用” --master本地[*] - conf spark.eventLog.enabled = false --conf“spark.executor.extraJavaOptions = -XX:+ PrintGCDetails -XX:+ PrintGCTimeStamps”myApp。罐子

  • 重写spark-defaults.conf - 默认的Spark属性文件 - original spec

我优先描述特性 - SparkConf具有最高的优先级,spark-conf的优先级最低。欲了解更多详情,请查询this post

如果你想存储所有的属性在一个地方,只是你Typesafe Config。 Typesafe Config摆脱了使用输入流来读取文件,它在scala应用程序中被广泛使用。