簡體   English   中英

火花文本文件加載文件而不是行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM