是否可以将正则表达式用作带有JavaSparkContext的textinputformat分隔符?

时间:2017-10-04 09:07:03

标签: hadoop apache-spark

我有多个文本文件要使用JavaSparkContext读取,并且每个文件可能略有不同并包含多行记录,因此我想使用正则表达式分隔符来查找记录。是否可以使用正则表达式配置textinputformat分隔符?

..
String regex = "^(?!(^a\\s|^b\\s))";
JavaSparkContext jsc = new JavaSparkContext(conf);
jsc.hadoopConfiguration().set("textinputformat.record.delimiter", regex);
..

1 个答案:

答案 0 :(得分:1)

不幸的是,事实并非如此。 textinputformat.record.delimiter必须是一种修复模式。使用Spark时,您必须选择:

  • 实施您自己的Hadoop输入格式 - 更好地扩展,但需要更多工作。
  • 使用wholeTextFiles(或binaryFiles)并使用正则表达式拆分字符串 - 易于使用,但不会缩放到大文件。