Hadoop流媒体使用-files python中文乱码

时间:2015-02-03 09:17:43

标签: python hadoop hadoop-streaming

我不确定"乱码"对我的问题来说是正确的。 我的问题是这样的。我使用hadoop-streaming-0.20.2-cdh3u6.jar和python来编写mapreduce。命令如下:

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,dict是我本地存储中的目录,其中的文件包含中文单词。当我使用python来读取这些文件时 我变坏了#34;乱码"。一小段文件:

 石块 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 个答案:

答案 0 :(得分:1)

我发现问题的根本原因。当使用-files上传目录时,hadoop会在同一目录下创建.file_name.crc文件,所以当我的代码迭代文件也会处理.file_name.crc时,所以当编码单词时 在这些文件中会崩溃。