2013-07-17 30 views
4

在Spark中,可以設置一些hadoop配置設置,例如,在spark中設置textinputformat.record.delimiter

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,因爲我真的只需要獲取由兩條換行符分隔的記錄。

+0

你使用的是什麼版本的hadoop? – Noah

+0

我在Hadoop 1/CDH3上使用spark-0.7.2的預建版本(請參閱[這裏](http://spark-project.org/downloads/))。我非常確定它實際上是用hadoop 1.0.4構建的 – ptikobj

+1

我不確定它是否在該版本的hadoop中,您可能必須重新編譯爲支持所需內容的版本:https://問題.apache.org/jira/browse/HADOOP-7096 – Noah

回答

8

我得到了這個工作與普通的未壓縮文件與下面的功能。

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) 
} 
+0

您可以分享您使用的hadoop核心版本。 –

+0

@SumitKumarGhosh與CDH 4.4我相信。 – Andrew

+1

看起來它需要特定版本Hadoop 0.23.x和2.x版本 - [link](http://stackoverflow.com/questions/12330447/paragraph-processing-for-hadoop/12351209#12351209) 我用下面的Maven的依賴 - ' org.apache.hadoop Hadoop的客戶 2.2.0 ' 這是太好 - ' org.apache.hadoop 類Hadoop MapReduce的客戶端核心 2.2.0 ' –

相關問題