ID1 sendoh akria
ID2 ximen luxiaofeng
ID3 sendoh ximen
ID4 yegucheng shedoh
根据关键字从新排序:
package fff
import org.apache.log4j.{Level, Logger}
import org.apache.spark.{SparkContext, SparkConf}
import scala.collection.mutable
import scala.collection.mutable.ListBuffer
/**
* Created by sendoh on 2015/4/9.
*/
object InvertedIndex {
def main(args: Array[String]): Unit ={
//
Logger.getLogger("org.apache.spark").setLevel(Level.WARN)
Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)
//
if(args.length != 3){
println("Usage: java -jar code.jar dependency_jars file_locaion save_location")
System.exit(0)
}
val jars = ListBuffer[String]()
args(0).split(',').map(jars += _)
val conf = new SparkConf().setAppName("InvertedIndex").setSparkHome("/usr/local/spark-1.2.0-bin-hadoop2.4").setMaster("local[2]").setJars(jars)
val sc = new SparkContext(conf)
//读取数据,数据格式为一个大的HDFS文件中用\n分隔不同的文件,用\t分隔文件ID和文件内容,用“”分隔文件内的词汇
val data = sc.textFile("hdfs://localhost:9000/datatnt/textwordd.txt").map(_.split("\t")).map(x => {(x(0), x(1))})
.flatMap(x => {
//将数据项转换为LinkedList[(词,文档ID)]的数据项,并通过flatmap将RDD内的数据项转换为(词,文档ID)
val list = new mutable.LinkedList[(String, String)]
val data = x._2.split(" ").iterator
while(data.hasNext){
list + data.next()
}
list
}).distinct()
//将(词,文档ID)的数据进行聚集,相同词对应的文档ID统计到一起,形成(词,“文档ID1,文档ID2,文档ID3···”),形成简单的倒排索引
data.map(y => {(y._2, y._1)}).reduce((a, b) => {a+"\t"+b}).saveAsTextFile("hdfs://localhost:9000/outputtnt/textwoddd")
//data.map(y => {(y._2, y._1)})
//'\t'.join(data).saveAsTextFile("hdfs://localhost:9000/outputtnt/textwoddd")
}
}
这篇博客主要记录了关于Spark的学习心得,涉及到ID排序的相关内容。通过ID1至ID4的例子,阐述了如何对数据进行排序处理,是理解Spark数据操作的一个实践应用。

833

被折叠的 条评论
为什么被折叠?



