gpt4 book ai didi

在 pig 中编码

转载 作者:行者123 更新时间:2023-12-04 04:34:30 24 4
gpt4 key购买 nike

使用 Pig Latin 加载包含某些特定字符(例如,À、° 和其他字符)的数据并将数据存储在 .txt 文件中,可以看到 txt 文件中的这些符号显示为 � 和 ï 字符。这是因为 UTF-8 替换字符。
我想问一下是否有可能以某种方式避免它,也许使用一些 pig 命令,在结果中(在 txt 文件中)例如 À 而不是 �?

最佳答案

在 Pig 中,我们内置了动态调用程序,允许 Pig 程序员引用 Java 函数,而无需将它们包装在自定义 Pig UDF 中。因此,现在您可以将数据作为 UTF-8 编码字符串加载,然后对其进行解码,然后对其执行所有操作,然后将其存储为 UTF-8。我想这应该适用于第一部分:

    DEFINE UrlDecode InvokeForString('java.net.URLDecoder.decode', 'String String');
encoded_strings = LOAD 'encoded_strings.txt' as (encoded:chararray);
decoded_strings = FOREACH encoded_strings GENERATE UrlDecode(encoded, 'UTF-8');

负责执行此操作的 java 代码是:
    import java.io.IOException;
import java.net.URLDecoder;

import org.apache.pig.EvalFunc;
import org.apache.pig.data.Tuple;

public class UrlDecode extends EvalFunc<String> {

@Override
public String exec(Tuple input) throws IOException {
String encoded = (String) input.get(0);
String encoding = (String) input.get(1);
return URLDecoder.decode(encoded, encoding);
}
}

现在修改此代码以从普通字符串返回 UTF-8 编码的字符串并将其存储到您的文本文件中。希望它有效。

关于在 pig 中编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19979454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com