簡體   English   中英

無法在 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

我的問題是,如果我選擇集群的 Application 是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

在此處輸入圖片說明

選擇Spark並繼續正常設置您的集群。

創建集群后,我可以在這個集群上運行 MapReduce 和 Spark 應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM