【问题标题】:Control the split size with Avro Input Format in Hadoop在 Hadoop 中使用 Avro 输入格式控制拆分大小
【发布时间】:2013-06-11 23:56:36
【问题描述】:

我必须在 HDFS 的 avro 文件中读取序列化的 Avro 记录。为此,我使用了 AvroKeyInputFormat,因此我的映射器能够将读取的记录用作键。

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

我想像管理一个大文件一样管理输入目录中的每个文件。我必须使用 CombineFileInputFormat 吗?是否可以与 Avro 一起使用?

【问题讨论】:

    标签: hadoop mapreduce avro


    【解决方案1】:

    拆分遵循逻辑记录边界,最小和最大边界以字节为单位 - 即使拆分边界以字节为单位,文本输入格式也不会在文本文件中换行。

    要拆分每个文件,您可以将最大拆分大小设置为 Long.MAX_VALUE,也可以在代码中覆盖 isSplitable 方法并返回 false。

    【讨论】:

    • 问题不同:在 inout 文件夹中,我有很多 avro 文件,每个文件都包含一些 avro 对象。我必须考虑所有输入对象并设置每次拆分 3-4 个 avro 对象的限制。
    • 您希望每个任务只处理 3-4 个 avro 对象?一个文件包含多少个对象?物体的尺寸是多少?
    • 对不起,3-4 是一个例子,说明我必须控制每个拆分有多少对象。我更喜欢将所有输入视为一个文件,哟分裂,我不知道对象的大小,因为它们也可以包含数组。
    • 如果文件已经包含了你想要在每次拆分中处理的对象数量,那么只需在你的代码中重写 isSplitable 方法并返回 false。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    相关资源
    最近更新 更多