我有一个spark应用程序,我正尝试在amazon EMR上运行它。但是我的应用程序失败了,或者进入运行模式,永远不会退出,同样的代码在2-3分钟内就可以在本地机器上运行。我怀疑我创建spark session的方式有问题,我的主会议如下所示
val spark = SparkSession.builder
.master("local[2]")
.appName("Graph Creation")
.config("spark.sql.warehouse.dir", "warehouse")
.config("spark.sql.shuffle.partitions", "1")
.getOrCreate()如何构建spark会话,使其在本地计算机和amazon EMR上都能运行,而不会出现问题
发布于 2018-04-10 11:20:18
最好不要在EMR群集中使用local主URL,因为使用从节点不会带来任何好处。本地意味着spark将在启动它的系统上本地运行,不会尝试使用集群中的其他节点。local的主要目的是本地测试,每当你想在集群中运行时,你都应该选择一个资源管理器(yarn、mesos、spark-standalone或Kubernetes集群,请参阅here了解更多详细信息)。
您可以将主URL作为参数提供给spark-submit命令,这样,如果您在本地运行它,则可以传递'local‘,对于EMR集群,则传递'yarn’。
val spark = SparkSession.builder
.appName("Graph Creation")
.config("spark.sql.warehouse.dir", "warehouse")
.config("spark.sql.shuffle.partitions", "1")
.getOrCreate()然后在本地:
./bin/spark-submit --master local[2] ...在EMR上:
./bin/spark-submit --master yarn ...https://stackoverflow.com/questions/49728027
复制相似问题