hadoop流媒体的中文文件被python乱码了

b91juud3  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(294)

我不确定“乱码”这个词是否正确。我的问题是这样的。我使用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

概率,规则,dict,dict是我本地存储的目录,文件中包含中文单词。当我使用python读取这些文件时,会出现错误的“乱码”。一些文件片段:

石块 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脚本和相同的目录到mapper机器,从命令行运行它,它运行良好,没有这个问题。
文件中的字是utf-8。

5rgfhyps

5rgfhyps1#

我已经找到了问题的根本原因。当上传带有-files的目录时,hadoop会在同一个目录中创建.file\u name.crc文件,所以当我的代码迭代时文件也会处理.file\u name.crc,所以当对这些文件中的单词进行编码时会崩溃。

相关问题