我是一名初学者,正在编写Python和Pig UDF,并努力使用PIG对输入文件进行charset转换。PIG UDF(Python)字符集编码
浏览过的stackoverflow和整个互联网的天,尝试了一堆不同的东西,但我仍然无助。
希望有人能给我一个温柔的推向正确的方向。
环境:一个真正的分布式Hadoop集群(无本地实例)/ Cloudera的配置与utf-8
和Apache Pig version 0.12.0
我的源文件进行编码iso-8859-1
,目标是保存它作为utf-8
内容(后或在猪内进行其他几次操作之前)。
输入文件看起来像这样(用于测试目的的一对夫妇的ASCII/ISO-8859-1 - 一个字符每行):
ù
û
ü
ÿ
à
â
æ
ç
é
è
ê
ë
î
ô
这是我Pig-脚本:
RMF $output;
REGISTER 'charsetConversion.py' using org.apache.pig.scripting.jython.JythonScriptEngine AS pyudf;
data = LOAD '$input' USING PigStorage() AS (col1:chararray); --col1:bytearray
final = foreach data generate $0, pyudf.toUTF8(col1);
STORE final INTO '$output' USING PigStorage();
我的UDF(用Python编写的):
#!/usr/bin/env python
# charsetConversion.py
@outputSchema("word:chararray")
def toUTF8(s):
return unicode(s, 'iso-8859-1').encode('utf-8')
运行/提交脚本后,我得到了以下的输出:
� \t �
� \t �
� \t �
� \t �
� \t �
� \t �
� \t �
� \t �
� \t �
� \t �
� \t �
� \t �
� \t �
� \t �
� \t �
� \t �
� \t �
� \t �
� \t �
� \t �
� \t �
在第二列我会期望同样可读的价值es在输入文件中,而不是�
。
这里会发生什么?
我的方法是否被推荐?
还有什么其他方法存在(没有java Stackoverflow: Encoding in Pig - Java solution)?
非常感谢您的任何建议。