簡體   English   中英

將配置傳遞給Spark Job

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM