Spark使用自定义InputFormat读取WARC文件

时间:2016-11-14 10:09:42

标签: python hadoop apache-spark

我需要通过Spark处理.warc文件,但我似乎无法找到一种简单明了的方法。我更喜欢使用Python而不是通过wholeTextFiles()将整个文件读入RDD(因为整个文件将在单个节点(?)处理)因此它似乎唯一/最好的方式是通过自定义Hadoop InputFormat与Python中的.hadoopFile()一起使用。

然而,我找不到一个简单的方法来做到这一点。将.warc文件拆分为条目就像拆分\n\n\n一样简单;那么如何在不编写大量额外(无用)代码的情况下实现这一点,如在线的各种“教程”所示?可以用Python完成吗?

即,如何将warc文件拆分为条目而不用wholeTextFiles读取整个文件?

1 个答案:

答案 0 :(得分:2)

如果分隔符为\n\n\n,您可以使用textinputformat.record.delimiter

sc.newAPIHadoopFile(
  path ,
  'org.apache.hadoop.mapreduce.lib.input.TextInputFormat',
  'org.apache.hadoop.io.LongWritable',
  'org.apache.hadoop.io.Text',
  conf={'textinputformat.record.delimiter': '\n\n\n'}
)