【问题标题】:Cannot run MapReduce job on AWS EMR Spark application无法在 AWS EMR Spark 应用程序上运行 MapReduce 作业
【发布时间】:2021-09-28 01:56:35
【问题描述】:

我正在尝试从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 代码。

我该如何解决这个问题?

【问题讨论】:

  • 安装 Spark 选项。
  • @thebluephantom 你的意思是在Core Hadoop 集群上安装 Spark 选项对吗?
  • 显示的最后一个选项。
  • @thebluephantom 我使用该选项创建了另一个集群,但它无法运行代码。我想用这个选项运行 MapReduce 代码。
  • 第一个选项Core Hadoop正常运行代码。

标签: python apache-spark amazon-emr mrjob


【解决方案1】:

我发现我可以创建一个安装了 Hadoop 和 Spark 的集群。在Create Cluster - Quick Options 菜单中,转到Go to advanced options

选择Spark,继续正常设置集群。

集群创建后,我可以在这个集群上运行 MapReduce 和 Spark 应用程序。

【讨论】:

    猜你喜欢
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    相关资源
    最近更新 更多