python - 无法在 AWS EMR Spark 应用程序上运行 MapReduce 作业
问题描述
我正在尝试从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 代码。
我该如何解决这个问题?
解决方案
推荐阅读
- python - 按元组的第二个值排序字典或列表,然后按第一个
- android - 如何在贴纸视图上使用画布绘制颜色。我在视图上使用画布绘制,但没有绘制
- google-sheets - 如何连接多列,然后应用数组公式返回所有行的数据
- r - 根据单独数据框中的因子查找行平均值
- scala - 运行特定的代码块,以防 Option 结果为 None 并具有特定的保护功能
- sql-server - T-SQL 提取两个已知字符之间的字符串
- c++ - 使用 GStreamer 发送和接收自定义 RTCP 数据包/事件
- php - 提取到具有空返回的方法
- ruby - Ruby 中的 Random.rand(x) 和 rand(x) 有什么区别
- javascript - 使用 sinon 和 chai 测试异步函数是否引发了异常