[英]spark textfile load file instead of lines
在Spark中,我們可以使用textFile將文件加載到各行中,然后嘗試對這些行進行一些操作,如下所示。
val lines = sc.textFile("xxx")
val counts = lines.filter(line => lines.contains("a")).count()
但是,在我的情況下,我想將文件加載到塊中,因為文件和塊中的數據將如下所示。 塊將在文件中用空行分隔。
user: 111
book: 222
comments: like it!
因此,我希望textFile函數或任何其他解決方案可以幫助我使用塊加載文件,這可以通過以下方式實現。
val blocks = sc.textFile("xxx", 3 line)
有人遇到過這種情況嗎? 謝謝
我建議您從Hdfs實現自己的文件讀取器功能。 看一下textFile
函數,它建立在hadoopFile
函數之上,並且使用TextInputFormat
:
def textFile(path: String, minPartitions: Int = defaultMinPartitions): RDD[String] = {
assertNotStopped()
hadoopFile(path, classOf[TextInputFormat], classOf[LongWritable], classOf[Text],
minPartitions).map(pair => pair._2.toString).setName(path)
}
但是,可以通過此響應中所述的hadoop屬性來自定義此TextInputFormat
。 在您的情況下,定界符可以是:
conf.set("textinputformat.record.delimiter", "\n\n")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.