Hadoop流式多线输入

问题描述 投票:1回答:2

我正在使用Dumbo进行一些Hadoop Streaming工作。我有一堆JSON词典,每个词典都包含一篇文章(多行文本)和一些元数据。我知道Hadoop在提供大文件时性能最佳,所以我希望将所有JSON字典连成一个文件。

问题是我不知道如何让Hadoop将每个字典/文章作为单独的值读取而不是在换行符上拆分。如何告诉Hadoop使用自定义记录分隔符?或者也许我可以将所有JSON字典放入列表数据结构并让Hadoop读取它?

或者也许编码字符串(base64?)将删除所有新行,普通的“读者”将能够处理它?

python streaming hadoop hadoop-streaming
2个回答
1
投票

在连接JSON文件时,您可以用每个字典中的空格替换所有换行符。除了作为空白字符外,Newline在JSON中没有任何特殊含义。


0
投票

concatenated-json-mapreduce是一种自定义输入格式,记录阅读器将基于打开/关闭括号上的push / pop分割JSON对象。

它被编写为处理流JSON(而不是换行符分隔的JSON),因此只要它使用\n而不是实际的新行就可以正常形成JSON对象。

© www.soinside.com 2019 - 2024. All rights reserved.