我想在配置文件中指定Spark的所有屬性,然後在運行時加載該配置文件。指定Apache Spark的外部配置文件
~~~~~~~~~~編輯~~~~~~~~~~~
原來我很困惑如何去這樣做。忽略這個問題的其餘部分。要查看一個簡單的解決方案(在Java Spark中),瞭解如何將.properties文件加載到Spark集羣中,請參閱下面的答案。
原始問題僅供參考。
~~~~~~~~~~~~~~~~~~~~~~~~
我想
- 根據環境不同的配置文件(本地,AWS)
- 我想指定的應用程序特定參數
舉一個簡單的例子,讓我們想象一下,我想篩選依賴於字符串在日誌文件中的行。下面我有一個簡單的Java Spark程序,它從文件中讀取數據並根據用戶定義的字符串對其進行過濾。該程序需要一個參數,即輸入源文件。
的Java代碼星火
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
public class SimpleSpark {
public static void main(String[] args) {
String inputFile = args[0]; // Should be some file on your system
SparkConf conf = new SparkConf();// .setAppName("Simple Application");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD<String> logData = sc.textFile(inputFile).cache();
final String filterString = conf.get("filterstr");
long numberLines = logData.filter(new Function<String, Boolean>() {
public Boolean call(String s) {
return s.contains(filterString);
}
}).count();
System.out.println("Line count: " + numberLines);
}
}
配置文件
配置文件是基於https://spark.apache.org/docs/1.3.0/configuration.html,它看起來像:
spark.app.name test_app
spark.executor.memory 2g
spark.master local
simplespark.filterstr a
的問題
我使用以下參數執行應用程序:
/path/to/inputtext.txt --conf /path/to/configfile.config
然而,這不起作用,因爲異常
Exception in thread "main" org.apache.spark.SparkException: A master URL must be set in your configuration
被拋出。對我來說意味着配置文件沒有被加載。
我的問題是:
- 什麼是錯我的設置?
- 是否在spark配置文件良好實踐中指定應用程序特定參數?
它不適合我。仍然得到FileNotFoundException。 – nish 2015-10-08 18:28:37
你把文件放在hdfs中?你在使用aws嗎? – Alexander 2015-10-08 18:37:19
是的,我把文件放在hdfs中。是的,我正在使用aws EMR – nish 2015-10-08 18:39:31