Сбой программы на AWS EMR с помощью hadoop (на локальном компьютере все в порядке)

Я пытаюсь использовать пакет Python fuzzywuzzy в программе сопоставления для вычисления расстояния редактирования. Моя программа отлично работает на локальном компьютере, но не работает в кластере AWS emr. Я попробовал два подхода (как на локальной машине, так и на кластере AWS EMR):

<сильный>1. Установив fuzzywuzzy:

Я установил fuzzywuzzy с помощью pip как на главном, так и на подчиненном узлах. Если я закомментирую последние 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 на локальную машину. Когда я попробовал то же самое на AWS EMR, это не удалось.

Я заархивировал пакет fuzzywuzzy ("temp.zip") и назвал его в своей программе карты. Я также скопировал файл temp.zip на подчиненные узлы.

!/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')

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

Может кто-нибудь подсказать, что не так с моим кодом/как запустить fuzzywuzzy на hadoop?


person Chandra    schedule 20.12.2014    source источник


Ответы (1)


Я мог заставить fuzzywuzzy работать, скопировав установочные файлы fuzzywuzzy на главные и подчиненные узлы, а затем установив fuzzywuzzy вручную.

python setup.py install

pip install не установил fuzzywuzzy, хотя он был успешным.

person Chandra    schedule 05.01.2015