5

在 Spark 中,可以设置一些 hadoop 配置设置,例如

System.setProperty("spark.hadoop.dfs.replication", "1")

这行得通,复制因子设置为 1。假设是这种情况,我认为这种模式(将“spark.hadoop.”添加到常规 hadoop 配置属性中)也适用于 textinputformat.record.delimiter:

System.setProperty("spark.hadoop.textinputformat.record.delimiter", "\n\n")

然而,火花似乎只是忽略了这个设置。我是否textinputformat.record.delimiter以正确的方式设置?有没有更简单的方法来设置textinputformat.record.delimiter. 我想避免自己写InputFormat,因为我真的只需要获取由两个换行符分隔的记录。

4

1 回答 1

9

我使用以下函数处理了普通的未压缩文件。

import org.apache.hadoop.io.LongWritable
import org.apache.hadoop.io.Text
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat

def nlFile(path: String) = {
    val conf = new Configuration
    conf.set("textinputformat.record.delimiter", "\n")
    sc.newAPIHadoopFile(path, classOf[TextInputFormat], classOf[LongWritable], classOf[Text], conf)
      .map(_._2.toString)
}
于 2014-01-03T07:18:52.290 回答