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
在这些文件中会崩溃。
我不确定 "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 在这些文件中会崩溃。