[英]what's the purpose and usecase of --files in spark-submit?
我有兩個文件,現在在本地,以后可以在 S3/HDFS 等上。用戶文件是 ~75mb ~100 萬條記錄。 一個位置文件是 ~150kb ~7000 條記錄。
我想讀取文件並從命令行發送路徑。
我很困惑是否應該將文件的完整路徑作為參數發送給 main 或使用 --files 標志?
如果是,是否應該只通過 --files 標志發送小文件(什么大小?),因為它將文件發送給每個執行程序,因為涉及傳輸?
我有這樣的代碼
override def run(spark: SparkSession, config: RecipeCookingTimeConfig, storage: Storage): Unit = {
/**
* Only I/O here
* Transformations and Pre-Processing go in separate functions
*/
MyLogger.log.setLevel(Level.WARN)
val userFilePath =
if (config.userFileName.isEmpty) "/tmp/data/somefile.json"
else SparkFiles.get(config.userFileName)
val userData = storage.read(ReadConfig("json", userFilePath)) match {
case Success(value) => value
case Failure(ex) => spark.stop(); System.exit(1); spark.emptyDataFrame
}
val airportFilePath =
if (config.airportFileName.isEmpty) "/tmp/data/somefile2.json"
else SparkFiles.get(config.airportFileName)
val airportData = storage.read(ReadConfig("json", airportFilePath)) match {
case Success(value) => value
case Failure(ex) => spark.stop(); System.exit(1); spark.emptyDataFrame
}
}
--files逗號分隔的文件列表
如果 memory 服務正確,則使用 YARN 集群模式存放在每個 Executor 的工作目錄中的文件的逗號分隔列表。
用例是(盡管我自己從未使用過)是您可以讀取的配置信息,而不是使用 args[x] 方法。
要放置在每個執行程序的工作目錄中的文件的逗號分隔列表。 對於客戶端部署模式,路徑必須指向本地文件。 對於集群部署模式,路徑可以是本地文件,也可以是集群內全局可見的 URL。 這些文件在執行器中的文件路徑可以通過SparkFiles.get(fileName)
訪問。
--files
的其他調整:
更多細節在官方文檔中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.