リデュース出力ファイルのキーと値の間の区切り文字として^Aを使用しようとしています。構成設定「mapred.textoutputformat.separator」が必要なものであり、これによりセパレーターが「、」に正しく切り替わることがわかりました。
conf.set("mapred.textoutputformat.separator", ",");
ただし、^ A文字を処理することはできません:
conf.set("mapred.textoutputformat.separator", "\u0001");
このエラーをスローします:
ERROR security.UserGroupInformation: PriviledgedActionException as:user (auth:SIMPLE) cause:org.apache.hadoop.ipc.RemoteException: java.io.IOException: java.lang.RuntimeException: org.xml.sax.SAXParseException; lineNumber: 68; columnNumber: 94; Character reference "&#
このチケットhttps://issues.apache.org/jira/browse/HADOOP-7542を見つけて、これを修正しようとしたが、XML1.1の懸念によりパッチを元に戻したことがわかりました。
したがって、簡単な回避策を使用して、セパレータを^ A(かなり一般的なようです)に設定することに成功した人はいないかと思います。または、タブセパレータを使用して解決する必要がある場合。
ありがとう!
CentOS6.2でHadoop0.20.2-cdh3u5を実行しています