我開始使用Hadoop Spark進行項目。我將在斯卡拉開發。
我從頭開始創建項目,我想知道如何處理屬性。ScalaSpark中的屬性的最佳實踐
我來自Java背景,我使用.properties文件並在開始時加載它們。然後我有一個類用於訪問我的屬性的不同值。
這是Scala中的一個好習慣嗎?
嘗試了谷歌搜索,但沒有任何與此有關的東西。
我開始使用Hadoop Spark進行項目。我將在斯卡拉開發。
我從頭開始創建項目,我想知道如何處理屬性。ScalaSpark中的屬性的最佳實踐
我來自Java背景,我使用.properties文件並在開始時加載它們。然後我有一個類用於訪問我的屬性的不同值。
這是Scala中的一個好習慣嗎?
嘗試了谷歌搜索,但沒有任何與此有關的東西。
在這裏,我們做的事:
conf
被複制到System.propertiesconfig-file
用於讀取配置文件(使用火花上下文,以便能夠從S3/HDFS與自定義代碼路徑讀能夠從讀取jar資源)withFallback
機制將來自資源和讀取文件的默認配置組合在一起。順序很重要,因爲我們希望類型安全使用(2)中的值來覆蓋文件中的thoses。如果您正在尋找提供再火花性質有不同的方式可以讀取性能在Scala中類似的文件到Java
import scala.io.Source.fromUrl
val reader = fromURL(getClass.getResource("conf/fp.properties")).bufferedReader()
你可以閱讀更多關於I/O包在Scala Standard Library I/O
這樣做的例如在提交火花作業時提供它們。
希望這有助於。
有三種方法來確定用於火花性能:
Spark Propertis
在SparkConf
original spec:火花屬性控制大多數應用程序設置,並且分別爲每個應用配置 。這些屬性可以直接在SparkConf上設置爲 傳遞給您的SparkContext。
Dynamically Loading Spark Properties
original 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應用程序中被廣泛使用。
這是一個聊天或鬆懈的問題 - 請參閱http://chat.stackoverflow.com/rooms/127924/apache-spark –