使用自定义inputSplit和/或recordReader类来读取JSON

时间:2014-03-06 19:18:36

标签: java json hadoop

在我的hadoop类中,他们希望我们学习如何编写/配置自定义输入格式类来处理不是每行一条记录的数据(如TextInputFormat)。

数据是来自Twitter API的JSON数据,因此它基本上是每个代表推文的小型JSON对象列表。

[
    {
        "text":"tweet string",
        ...more...
    },
    {
        ....
    },
]

实验室规范建议专注于编写一个自定义recordReader类,该类在给定的InputSplit中手动解析JSON,使用类似堆栈的方式来跟踪打开/关闭大括号。坦率地说,这对我来说似乎是愚蠢的,我不应该重新发明解析JSON的问题......这是使用标准数据格式的优势。

相反,我希望使用像json-simple这样的现有JSON解析器来提出更好的解决方案。我似乎应该能够创建一个自定义的InputSplit类,将JSON对象列表拆分为更小的子列表,然后自定义recordReader也将使用JSON解析器单独获取每个JSON对象。

这是一种正确的方法吗?我应该自定义InputSplit吗?是否有更好的方法可以通过Hadoop MapReduce作业制作大型JSON文本?

0 个答案:

没有答案