我不确定"乱码"对我的问题来说是正确的。 我的问题是这样的。我使用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。
答案 0 :(得分:1)
我发现问题的根本原因。当使用-files上传目录时,hadoop会在同一目录下创建.file_name.crc文件,所以当我的代码迭代文件也会处理.file_name.crc时,所以当编码单词时 在这些文件中会崩溃。