我是一名初學者,正在編寫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)?
非常感謝您的任何建議。