Hadoop streaming 中文乱码 -files python

Hadoop streaming had Chinese garbled with -files python

我不确定 "garbled" 是否适合我的问题。 我的问题是这样的。我使用 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 读取这些文件时 我变坏了 "garbled"。一小段文件:

 石块 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。

我已找到问题的根本原因。当用-files上传目录时,hadoop会在同一个目录下创建.file_name.crc文件,所以当我的代码迭代文件时也会处理.file_name.crc,所以当encode words 在这些文件中会崩溃。