2017-08-28 82 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應用程序中被廣泛使用。