2015-02-03 2 views
0

Я не уверен, что «искаженный» является правильным словом для моей проблемы. Моя проблема такая. Я использую hasoop-streaming-0.20.2-cdh3u6.jar и python для создания mapreduce. Команда, как показано ниже:В потоковом режиме Hadoop был китайский, искаженный с -files python

hadoop jarhadoop-streaming-0.20.2-cdh3u6.jar \ 
-D mapred.reduce.tasks=0 \ 
-D mapred.job.priority=VERY_HIGH \ 
-files probability,rule_dict,dict \ 
-file "naive_bayes.py" \ 
-mapper "python naive_bayes.py" \ 
-input xxx \ 
-output xxx 

вероятность, rule_dict, ДИКТ каталоги в моем локальном хранилище, файлы в них содержатся китайские слова. когда я использую питон, чтобы прочитать эти файлы я получаю плохо «искаженный» Меньшяя фрагмент файла:

石块 0.000025 
最后 0.000321 
老面孔 0.000012 
GP17 0.000012 
圈 0.000136 
看个够 0.000062 
布兰 0.000062 

и что читать эти файлы было

PB�;��W�mVKZm����e�2��U�؎��"/�1_�u�8)i~�J�N86�l}[��y8�;%(K��/P��<��F/+����=��X�n� 

есть способ решить мой вопрос?

Я загрузил один и тот же сценарий python и те же каталоги на машину-картографу, запустил его из командной строки, и он работает без этой проблемы.

слова в файлах являются utf-8.

ответ

1

Я нашел причину проблемы. При загрузке каталога с помощью -files hasoop создаст файл .file_name.crc в том же каталоге, поэтому, когда мои файлы итераций кода будут обрабатываться .file_name.crc, поэтому при кодировании слов в этих файлах произойдет сбой.

Смежные вопросы