繁体   English   中英

我们如何使用Apache Spark Scala从txt文件逐行对数据进行排序?

[英]how we can sort line by line data from txt file using Apache Spark scala?

log.txt文件包含:

cat,black,dog,apple,red
zoo,apple,red,blue,green
apple,green,zoo,black,walk

我的代码是:

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.rdd.RDD

object ScalaApp {
def main(args: Array[String]) {
val sc = new SparkContext("local[4]", "Program")

val data = sc.textFile("data.txt").flatMap(line=> line.split(","))
val d1=data.map(_.sorted)
d1.foreach(print _)
 }
 }

我想要以下结果:

  apple,black,cat,dog,red
  apple,blue,green,red,zoo
  apple,black,green,walk,zoo 

但我的代码给出的结果为:

 actabckldgoaelppderoozaelppderbelueegnraelppeegnroozabcklaklw

请提供任何解决方案!

您必须先按行分割,然后再按“,”

val data = sc.textFile("data.txt")
             .map(word=> word.split(",")).map(_.sorted)
data.collect()

尝试将定义d1的行更改为:

val d1=data.map(_.sorted)
d1.foreach(println _)

这应该创建一个RDD[Array[String]] ,其中RDD每个元素都是一个数组,其中包含一行文本的标记,这些标记按升序排序:

val data = sc.textFile("log.txt").map(line => line.split(",").sorted)

另外,请注意,如果您执行data.foreach(println) ,输出将进入工作程序的标准输出,而不是驱动程序的标准输出。

但我的代码给出的结果为:

actabckldgoaelppderoozaelppderbelueegnraelppeegnroozabcklaklw

因为dataRDD[String] (因为您正在执行flatMap而不是map ),所以您会data.map(_.sorted)所以当您执行data.map(_.sorted)它将对data每个String进行排序,例如,“ apple”将变为“ aelpp”,等等。使用map而不是flatMap

终于我解决了这个问题,也想与大家分享:

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.rdd.RDD

object ScalaApp {
def main(args: Array[String]) {
val sc = new SparkContext("local[4]", "Program")
val data = sc.textFile("data.txt").flatMap(_.split("\n"))
    val lc=data.count().toInt
val d1=data.flatMap(line=>line.split(",").sorted)
d1.foreach(println)
val a=d1.toArray
var loop=0
    for(i<-0 to lc-1){
    println(a(loop)+" "+a(loop+1)+" "+a(loop+2)+" "+a(loop+3)+" "+a(loop+4)+" "+a(loop+5))
    loop=loop+6
 }
 }
 }

data.txt文件包含:

cat,black,dog,apple,red,cat
zoo,apple,red,blue,green,cat
apple,green,zoo,black,walk,cat

结果是:

apple black cat cat dog red
apple blue cat green red zoo
apple black cat green walk zoo

这就是期望的输出!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM