我将有一个Pig脚本,最后将其内容存储在文本文件中。

STORE foo into 'outputLocation';


在完全不同的工作中,我想读取此文件的行,并将其解析回Tuples。 foo中的数据可能包含字符数组,其中包含保存{}()等Pig Bags / tuple时使用的字符。我可以使用诸如此类的代码读取以前保存的文件。

FileSystem fs = FileSystem.get(UDFContext.getUDFContext().getJobConf());
FileStatus[] fileStatuses = fs.listStatus(new Path("outputLocation"));

for (FileStatus fileStatus : fileStatuses) {
    if (fileStatus.getPath().getName().contains("part")) {
        DataInputStream in = fs.open(fileStatus.getPath());
        String line;
        while ((line = in.readLine()) != null) {
           // Do stuff
        }
    }
}


现在// Do stuff在哪里,我想将String解析回一个Tuple。 Pig是否可以提供API?我能找到的最接近的是StorageUtil类的textToTuple函数,但这仅使Tuple包含一个DataByteArray。我想要一个包含其他包,元组和原始数组的元组,以便我可以轻松地重新获取原始字段。如果有帮助,我可以更改保存原始文件的StoreFunc。

最佳答案

我只是将数据输出为JSON格式。 Pig具有对JSON解析直到元组的本机支持。这样可以避免您必须编写UDF。

09-11 20:19