gpt4 book ai didi

java - 在 LoadFunc.getNext() 中跳过一条记录

转载 作者:可可西里 更新时间:2023-11-01 15:03:36 27 4
gpt4 key购买 nike

我正在扩展 LoadFunc。在 getNext 函数中,我想跳过在某些条件下返回元组的步骤——这样我只能加载数据文件的样本。我尝试为不想返回的行返回 null,但问题是该方法在返回第一个 null 元组后终止。

有谁知道这样做的方法吗?我应该用不同的方法来做吗?

提前致谢。

最佳答案

(假设你的意思是 LoadFunc 在 pig ...)

我建议编写一个新方法来执行您想要的操作,而不会破坏 getNext() 方法的原始记录使用。

您应该查看扩展 LoadFunc 的 Pig 类的源代码,了解它们如何实现 getNext()。例如:TextLoader

从那里做你想做的事情应该是相当微不足道的。

编辑以尝试提供更详细的帮助:

(这里以TextReader为例)

getNext() 方法正在从 RecordReader 读取数据。它通过调用 RecordReader.nextKeyValue() 前进到下一条记录来执行此操作。您检查它是否为真(意味着它读取了一条记录),如果是,您调用 RecordReader.getCurrentValue() 来检索值。

假设您只希望每五分之一作为 getNext() 中的样本:

int count = 0;
Text myText = null;
whlie(myRecordReader.nextKeyValue() == true)
{
if (count == 4)
{
myText = (Text) myRecordReader.getCurrentValue();
break;
}

count++;
}

if (myText != null) // we didn't hit the end; we have a record
{
... // create the tuple
return myTuple;
}
else
return null;

(纠正了我愚蠢的失误)

关于java - 在 LoadFunc.getNext() 中跳过一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5759038/

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