我将有一个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。