python - 程序在具有hadoop的AWS EMR上失败(在本地计算机上正常)

标签 python hadoop fuzzywuzzy

我正在尝试在mapper程序中使用python的fuzzywuzzy package来计算编辑距离。我的程序在本地计算机上运行良好,但在AWS emr集群上失败。我尝试了以下两种方法(在本地计算机和AWS EMR集群上):

1.通过安装Fuzzywuzzy:

我在主节点和从节点上都使用pip安装了Fuzzywuzzy。如果我注释掉以下代码的最后4行,则不会出现任何错误。但是我想在程序中使用Fuzzywuzzy。

!/usr/bin/python  
import re
import sys
import os
import csv

desc_dict = {}
with open('Keys.csv', 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
            query_set = row

for line in sys.stdin:
  line = line.strip() 
  row = line.split(',')
  if(len(row)>2):
      desc_dict[(int(row[0]), row[1])] = (row[2].lower()).encode('utf-8')
from fuzzywuzzy import *
import fuzzywuzzy.fuzz
import fuzzywuzzy.utils
print fuzzywuzzy.fuzz.partial_ratio("this is a test", "this is a test!")

我得到以下错误:
 Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1

2.不安装Fuzzywuzzy

我可以在不需要在本地计算机上安装Fuzzywuzzy的情况下运行map-reduce程序。当我在AWS EMR上尝试相同操作时,它失败了。

我压缩了Fuzzywuzzy程序包(“temp.zip”),并在我的 map 程序中将其调用。我也将temp.zip文件复制到从属节点。

!/ usr / bin / python
汇入
导入系统
导入操作系统
导入csv
desc_dict = {}
with open('Keys.csv', 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
            query_set = row

for line in sys.stdin:
  line = line.strip() 
  row = line.split(',')
  if(len(row)>2):
      desc_dict[(int(row[0]), row[1])] = (row[2].lower()).encode('utf-8')

sys.path.insert(0,'temp.zip')
from fuzzywuzzy import *
import fuzzywuzzy.fuzz
print fuzzywuzzy.fuzz.partial_ratio("this is a test", "this is a test!")

我得到以下错误:
 Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1

有人可以指导我的代码出什么问题/如何在hadoop上运行Fuzzywuzzy吗?

最佳答案

通过将Fuzzywuzzy安装文件复制到主节点和从属节点,然后手动安装Fuzzywuzzy,可以使Fuzzywuzzy工作

python setup.py install

即使安装成功,pip install也不会安装Fuzzywuzzy。

关于python - 程序在具有hadoop的AWS EMR上失败(在本地计算机上正常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27585373/

相关文章:

python - 3D 格式 : obj and duplicate vertices

python - 如何在按下按钮后更改 TextInput 文本

hadoop - 如何通过创建与现有表具有相同结构的新配置单元表从配置单元表中删除重复项?

database - 将 Spark 与 Cassandra 结合使用的优势

python - 何时需要Elasticsearch进行数据分析和客户服务

python - 对多值字典的嵌套列表中的所有值运行查询

python - 测试脚本输出

python - PySpark/Python:将字典python输出转换为RDD/或其他可保存(HDFS)格式

python - 如何使用 fuzzywuzzy 的 process.extract 函数按特定属性处理对象列表?

python - 在 wxPython 中使用触摸板手势?