我们有一个hdfs文件有多个avro记录。我们在avro记录中有一个字段,它可以包含大的xml字符串(高达10gb)。
输入,例如。
{
id: 1,
content: "<data><item>...</item><item>...</item>...</data>"
},
{
id: 2,
content: "<data><item>...</item><item>...</item>...</data>"
}
根据我对mapreduce的理解,我们可以创建自己的输入分割来分割数据。如果文件只是纯xml,我们可能会使用xmlinputformat之类的东西来拆分特定的xml标记。在这种情况下,它在一个avro字段中。似乎一个Map器会占用整个10gb的字符串,这将是非常缓慢的。
有没有什么方法可以有效地在xml项标记上切碎这些数据?期望的输出将是每个项目都有一个avro记录。
输出,例如。
{
data_id: 1,
item_data: "<item>...</item>"
},
{
data_id: 1,
item_data: "<item>...</item>"
},
{
data_id: 2,
item_data: "<item>...</item>"
},
{
data_id: 2,
item_data: "<item>...</item>"
},
...
暂无答案!
目前还没有任何答案,快来回答吧!