SparkContext Java部署作业和来自AWS EMR的MapReduce



Hi在web和amazon文档中搜索如何在aws上的现有emr纱线集群上运行spark作业的一般知识。

我陷入了困境。我已经设置了一个本地[*]火花簇进行测试;现在我想在aws-emr上测试一下。

到目前为止,我已经在aws上创建了一个emr集群,但找不到关于运行以下代码的文档。如果

"spark.master.url" is set as local[*]

等级代码:

public class SparkLocalImpl implements DataMapReduce{
private static SparkConf conf;
private JavaSparkContext sparkContext;
private void createContext(){
conf = new SparkConf().setMaster(env.getProperty("spark.master.url"));//rest is default
sparkContext = new JavaSparkContext(conf);
}
public List<String> getMapReducedData(List<String> str){
createContext();
JavaRDD<String> rdd = sparkContext.parallelize(str);
return rdd.map(eachStr->customMapFunction(eachStr))
.collect()
.stream()
.flatMap(x -> x.stream())
.collect(Collectors.toList());

}
public List<String> customMapFunction(String str){
List<String> strMappedList= new ArrayList();
//do something 
return strMappedList;
} 
}

有人能告诉我我做错了什么吗?

AWS EMR不支持独立的火花群集模式。它支持集群&客户端模式。

但是,请尝试使用AWS Glue。查看您的代码,它看起来像是一个简单的ETL作业。此外,AWS胶水确实支持

GlueContextSparkContext的自定义实现

你可以在这里找到提到的。

https://aws.amazon.com/premiumsupport/knowledge-center/emr-submit-spark-job-remote-cluster

也检查emr 上的apache livy

最新更新