package com.winhong.datadig
import java.io.{File, PrintWriter}
import org.apache.log4j.{Level, Logger}
import org.apache.spark.mllib.feature.{IDF, HashingTF}
import org.apache.spark.mllib.linalg
import org.apache.spark.mllib.stat.Statistics
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkContext, SparkConf}
import breeze.numerics.{sqrt, pow}
import scala.math._
object CosineSimilarity {
//
conf.setAppName("App").setMaster("local[5]")
//
sc.parallelize(List((1,2),(3,4),(3,6))).foreach(println(_))
//
for(c <-
resRdd.map(x => {x}).toArray()){
//
val v = sc.parallelize(c).reduceByKey((a,b) => {
//
val count = sqrt(pow(a,2)+pow(b,2)).toString
//
println("count:"+count)
//
var result = 1.0
//
println("count.length:"+count.length)
//
if(count.length > 3 )result=count.toDouble
//
else result=0.0
//
result
//
})
//
println("----------nearCsWordsStr--HAHAHA: "+getRDDSecondStrs(nearCsWords))
//
nearCsWords.foreach(print)
//
println()
//
val resultString = lineCs+nearCsWords.toArray().foreach()
//
println(resultString)
//
val m = v.filter(_._2.toString.length > 3)
//
m.map(_ => writer.writer(_))
//
m.toArray().foreach(println)
//
resuRdd.foreach(println)
//
val doubleRDD = resRdd.flatMap(identity)
//
doubleRDD.foreach{
//
m => println(m)
//
}
//
println("doubleRDD-------------------")
//
resRdd.saveAsTextFile("/root/result/resRdd")
//
val tryRDD = resRdd.map(
//
line => {
//
val kList = line.reduceBy
//
val nameMap = kList.toList.zip(line._2.toList)
//
nameMap
//
}
//
//
)
//
val aaaRdd = resRdd.map(x =>{
//
x.map(y => y._1+":"+y._2)
//
})
//
aaaRdd.foreach(println)
//
println("aaaRdd-------------------")
//
val resuRdd = aaaRdd.map(x => {
//
x.toString().substring(5,x.toString().length-1)
//
})
//
val resuRdd = resRdd.map(x => {
//
x.toString().substring(5,x.toString().length-1)
//
})
//
resuRdd.foreach(println)
//
println("resuRdd-------------------")
//
val tryRdd = resuRdd.map(x => x:List[(String,Double)])
//
tryRdd.foreach(println)
//
println("tryRdd-------------------")
//
val resultRdd = resRdd.map(x => x.toList)
//
resultRdd.foreach(println)
//
println(resultRdd.take(1))
//
val newOne = resultRdd.reduce((x,y) => x++y)
//
newOne.foreach(println)
//
println("resultRdd-------------------")
//
//
def consine(x: Double, y: Double): Double = {
//
val res = sqrt(pow(x,2)+pow(y,2))
//
res
//
}
//
val consineRdd = resRdd.reduceByKey((x:Double,y:Double) => consine(x,y))
}