Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 为文本文件中的每条记录创建正/负计数矩阵_Scala_Apache Spark - Fatal编程技术网

Scala 为文本文件中的每条记录创建正/负计数矩阵

Scala 为文本文件中的每条记录创建正/负计数矩阵,scala,apache-spark,Scala,Apache Spark,我试图用ApacheSpark(使用Scala)中的一包肯定和否定词对一些评论数据进行情绪分析。我是Scala的新手,所以需要一些帮助。程序如下所示: 读取RDDs中的正/负数值 val pos_words = sc.textFile("D:/spark4/mydata/pos-words.txt") val neg_words = sc.textFile("D:/spark4/mydata/neg-words.txt") 将评论读入RDD val dataFile = sc.textFile

我试图用ApacheSpark(使用Scala)中的一包肯定和否定词对一些评论数据进行情绪分析。我是Scala的新手,所以需要一些帮助。程序如下所示:

读取RDDs中的正/负数值

val pos_words = sc.textFile("D:/spark4/mydata/pos-words.txt")
val neg_words = sc.textFile("D:/spark4/mydata/neg-words.txt")
将评论读入RDD

val dataFile = sc.textFile("D:/spark4/mydata/review_data.txt")
val reviews = dataFile.map(_.replaceAll("[^a-zA-Z\\s]", "").trim().toLowerCase())
将评论平铺成单个单词

val words = reviews.flatMap(_.split(" "))
现在有没有一种方法可以在单词RDD的映射函数中使用pos_单词和neg_单词,并根据每个评论RDD记录分配所有肯定单词和否定单词的计数

期望的产出将是

<Review Text 1>,<#PosWordCount>,<#NegWordCount>

xxxxxxxxxxxxxx,20,10

yyyyyyyyyyyyyy,5,30
,,
XXXXXXXXXXXX,20,10
YYYYYYYYYY,5,30

任何帮助都将不胜感激。

要做到这一点,您需要将您的积极和消极词典分发给集群中的所有执行者。在记忆中,有许多人喜欢小而适合。我假设您的评论可能是一个更大的RDD,您希望分发它。因此:

  • 通过
    pos\u words.collect().asSet
    将词典提取到集合中
  • 转换为广播变量
  • 构建一个小的、普通的Scala函数,该函数接受一个回顾和两个集合,迭代所有单词,并记录肯定和否定的数量。返回所需的元组。这是基本的编程
  • 使用
    reviews.map(f)
  • 祝你好运