Spark найти совпадения строк - PullRequest
0 голосов
/ 05 февраля 2019

как я могу найти вхождение совпадающей строки согласно приведенному ниже фрагменту кода, я могу получить отфильтрованные строки в качестве выходных данных, но не вхождения

import org.apache.spark._
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._

object WordCount {
  def main(args: Array[String]) {

 val conf = new SparkConf().setAppName("wordCount")


 val sc = new SparkContext(conf)

  // Load our input data.
 val input =  sc.textFile("file:///tmp/ganesh/*")

 val matched_pattern = input.filter(line => line.contains("Title"))

 // Split it up into words.
val words = matched_pattern.flatMap(line => line.split(" "))

// Transform into pairs and count.
 val counts = words.map(word => (word, 1)).reduceByKey{case (x, y) => x + y}

 // Save the word count back out to a text file, causing evaluation.
 counts.saveAsTextFile("file:///tmp/sparkout")

  }
}

1 Ответ

0 голосов
/ 05 февраля 2019

Вот пример - с использованием широковещательной переменной.stopWords на самом деле включает в себя слова.

val dfsFilename = "/FileStore/tables/7dxa9btd1477497663691/Text_File_01-880f5.txt"
val readFileRDD = spark.sparkContext.textFile(dfsFilename)

// res4: Array[String] = Array(The the is Is a A to To OK ok I) //stopWords
val stopWordsInput = spark.sparkContext.textFile("/FileStore/tables/filter_words.txt")
val stopWords = stopWordsInput.flatMap(x => x.split(" ")).map(_.trim).collect.toSet
val broadcasted = sc.broadcast(stopWords)

val wcounts1 = readFileRDD.map(x => (x.replaceAll("[^A-Za-z0-9]", " ")                                     
                      .trim.toLowerCase))
                      .flatMap(line=>line.split(" "))
                      .filter(broadcasted.value.contains(_))
                      .map(word=>(word, 1))
                      .reduceByKey(_ + _)

wcounts1.collect

возвращает:

res2: Array[(String, Int)] = Array((The,1), (I,3), (to,1), (the,1))

Вы можете украсить трансляцию на stopWords - это то, что я и сделал.

Я виделВы вводите XML и заменяете все.Вы можете возиться с этим по своему вкусу.Я также добавил пункт, чтобы поместить все это в нижний регистр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...