[英]Passing configuration to Spark Job
我想要一個傳遞給SparkJobs的外部配置文件。 假設我正在從本地文件系統上的程序集和配置文件運行我的工作:
spark-class my.assembly.jar my_application.conf
如果可以在spark作業中訪問配置文件,那就太好了,但是不可能,它的main方法在另一個節點上執行。
我一直在嘗試對火花類使用--files參數,但這似乎不起作用。
spark repl中嘗試的類似行為(與--files相似)以錯誤結尾:
val inFile = sc.textFile(SparkFiles.get("conf.a"))
inFile.first()
上面假設文件conf.a已通過--files選項傳遞到spark-class。
對這個問題有什么想法嗎? 如何解決這個問題? 我真的很想使用外部文件作為配置源。
我正在使用apache-spark-0.9.0
您可以使用sc.addFile(path)
使文件對所有節點可見:
object MySparkApp extends App {
override def main(args: Array[String]) {
val sc = new SparkContext("local", "MySparkApp", "/opt/spark", jarOfObject(this.getClass))
sc.addFile(args(1))
val rdd = sc.textFile(SparkFiles.get("conf.a"))
}
}
> sbt run MySparkApp /tmp/conf.a
請注意,使用SparkFiles.get(path)
我僅給出文件名,而不是完整路徑:這是因為該文件來自我的本地文件系統,因此它將被復制到作業工作目錄中。
最簡單的方法是將文件加載到HDFS 群集中 。 您鏈接的教程假定該文件存在於HDFS中 ,因此可以在整個群集中進行訪問。 如果你不能再addfile
通過Freidereikhs給定參數將為你工作,但你必須要捆綁conf
與應用程序文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.