无法 运行 AWS EMR Spark 应用程序上的 MapReduce 作业
Cannot run MapReduce job on AWS EMR Spark application
我正在尝试 运行 来自 mrjob 的这个例子,关于 运行 在 AWS EMR 上进行字数统计 MapReduce 作业。
这是来自mrjob
的字数统计代码示例:
from mrjob.job import MRJob
class MRWordFrequencyCount(MRJob):
def mapper(self, _, line):
yield "chars", len(line)
yield "words", len(line.split())
yield "lines", 1
def reducer(self, key, values):
yield key, sum(values)
if __name__ == '__main__':
MRWordFrequencyCount.run()
我的 mrjob.conf
文件:
runners:
emr:
aws_access_key_id: <my_key_id>
aws_secret_access_key: <my_access_key>
region: ap-southeast-1
subnet: subnet-9a2f90fc
ec2_key_pair: EMR
ec2_key_pair_file: ~/.ssh/EMR.pem
ssh_tunnel: true
运行 命令:
python word_count.py -r emr --cluster-id=j-CLUSTER_ID readme.rst --conf-path mrjob.conf
我的问题是我可以 运行 这个例子,如果我选择我的集群的应用程序是 Core Hadoop
,我不能 运行 它与 Spark
应用程序选项。
这是运行 Spark EMR集群时的错误:
Waiting for Step 1 of 1 (s-xxx) to complete...
PENDING (cluster is RUNNING: Running step)
FAILED
Cluster j-CLUSTER_ID is WAITING: Cluster ready after last step failed.
我想 运行 使用 Spark
这个,因为我的应用程序涉及一些 Spark 代码和一些 MapReduce 代码。
我该如何解决这个问题?
我发现我可以创建一个安装了 Hadoop 和 Spark 的集群。在 Create Cluster - Quick Options
菜单中,转到 Go to advanced options
。
Select Spark
并继续正常设置集群。
创建集群后,我可以运行在这个集群上同时使用MapReduce和Spark应用程序。
我正在尝试 运行 来自 mrjob 的这个例子,关于 运行 在 AWS EMR 上进行字数统计 MapReduce 作业。
这是来自mrjob
的字数统计代码示例:
from mrjob.job import MRJob
class MRWordFrequencyCount(MRJob):
def mapper(self, _, line):
yield "chars", len(line)
yield "words", len(line.split())
yield "lines", 1
def reducer(self, key, values):
yield key, sum(values)
if __name__ == '__main__':
MRWordFrequencyCount.run()
我的 mrjob.conf
文件:
runners:
emr:
aws_access_key_id: <my_key_id>
aws_secret_access_key: <my_access_key>
region: ap-southeast-1
subnet: subnet-9a2f90fc
ec2_key_pair: EMR
ec2_key_pair_file: ~/.ssh/EMR.pem
ssh_tunnel: true
运行 命令:
python word_count.py -r emr --cluster-id=j-CLUSTER_ID readme.rst --conf-path mrjob.conf
我的问题是我可以 运行 这个例子,如果我选择我的集群的应用程序是 Core Hadoop
,我不能 运行 它与 Spark
应用程序选项。
这是运行 Spark EMR集群时的错误:
Waiting for Step 1 of 1 (s-xxx) to complete...
PENDING (cluster is RUNNING: Running step)
FAILED
Cluster j-CLUSTER_ID is WAITING: Cluster ready after last step failed.
我想 运行 使用 Spark
这个,因为我的应用程序涉及一些 Spark 代码和一些 MapReduce 代码。
我该如何解决这个问题?
我发现我可以创建一个安装了 Hadoop 和 Spark 的集群。在 Create Cluster - Quick Options
菜单中,转到 Go to advanced options
。
Select Spark
并继续正常设置集群。
创建集群后,我可以运行在这个集群上同时使用MapReduce和Spark应用程序。