通过AWS EMR的SparkContext Java Deploy Job和MapReduce

时间:2019-02-10 12:09:39

标签: java amazon-web-services apache-spark amazon-emr

嗨,他正在网上和亚马逊文档中搜索有关如何在aws上的现有emr纱线簇上运行火花作业的一般知识。

我被困在下面。我已经设置了本地[*]火花群集进行测试;现在,我想在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;
} 
}

有人可以告诉我我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

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

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

GlueContextSparkContext

的自定义实现

您可以找到此处提到的内容。

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

还要检查emr上的Apache livy