2013-06-11 44 views
0

我必须读取在HDFS中的avro文件中序列化的Avro记录。为此,我使用AvroKeyInputFormat,因此我的映射器能够将读取的记录作为关键字使用。在Hadoop中使用Avro输入格式控制分割大小

我的问题是,我如何控制分割大小?使用文本输入格式,它包括以字节为单位定义大小。在这里,我需要定义每个分组将包含多少条记录。

我想管理我的输入目录中的每个文件就像一个大文件。我有没有使用CombineFileInputFormat?是否有可能与Avro一起使用?

回答

0

拆分兑现逻辑记录边界,最小和最大边界是字节 - 文本输入格式不会打破在一个文本文件中的行,即使分割边界以字节为单位定义。

要在一个分裂的每个文件,您可以设置最大分割尺寸Long.MAX_VALUE或者您可以覆盖在你的代码的isSplitable方法并返回false。

+0

问题si不同:在inout文件夹中,我有很多avro文件,其中每个文件都包含一些avro对象。我必须考虑所有输入对象,并设置每个分割3-4个avro对象的限制。 –

+0

你想让每个任务只处理3-4个avro对象吗?一个文件包含多少个对象?对象的大小是多少? – SNeumann

+0

对不起,3-4是一个例子,说我必须控制每个分割有多少个对象。我更愿意将所有输入视为一个fileonky yo split,并且我无法知道对象的大小,因为它们也可以包含数组。 –