gpt4 book ai didi

hadoop - 带有新API的Hadoop自定义输入格式

转载 作者:行者123 更新时间:2023-12-02 21:57:53 25 4
gpt4 key购买 nike

我是Hadoop的新手,因此遇到了以下问题。我想做的是将数据库的一个分片(请不要问我为什么要做这样的事情)映射到一个映射器,然后对该数据进行某些操作,将结果输出到reducers并使用该输出再次使用相同的分片格式对相同的数据执行第二阶段映射/归约工作。
Hadoop不提供任何输入方法来发送数据库的碎片。您只能使用LineInputFormatLineRecordReader逐行发送。在这种情况下,NLineInputFormat也无济于事。我需要扩展FileInputFormatRecordReader类来编写自己的InputFormat。建议我使用LineRecordReader,因为基础代码已经处理了FileSplits以及与拆分文件相关的所有问题。
我现在需要做的就是覆盖我不完全知道的nextKeyValue()方法。

       for(int i=0;i<shard_size;i++){
if(lineRecordReader.nextKeyValue()){
lineValue.append(lineRecordReader.getCurrentValue().getBytes(),0,lineRecordReader.getCurrentValue().getLength());
}
}
上面的代码段是编写的,但是以某种方式无法正常工作。

最佳答案

我建议在您的输入文件中放入连接字符串和一些其他指示,以了解在何处找到该碎片。
Mapper将获取此信息,连接到数据库并执行一项工作。我不建议将结果集转换为hadoop的可写类-这会影响性能。
我认为要解决的问题是将相对较小的输入进行足够的拆分。
您可以简单地创建足够的小文件,每个文件都有几个分片引用,或者可以调整输入格式以构建小片段。第二种方式将更加灵活。

关于hadoop - 带有新API的Hadoop自定义输入格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9258629/

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