4,5实验的问题在于spark保存和读取json的时候列名容易不是本来需要的字段名而是c1,c2这样的列名,解决办法是不要用建议读取方法而要指定读取表头。
不用spark.read_csv()而是
spark.read.format(“json”).option(“header”,“true”).load(“hdfs://node1:9000/Online_Retail_true.json”)
注意
只有rdd里面2元组这种类型的才能用reduceByKey()
flatMap的扁平化操作和map不同有时会导致不同的类型结果,这一点有待提高,还是不太懂。
new JiebaSegmenter().sentenceProcess(x._2+x.3).toArray()
.map(x => (x.toString, 1)).groupBy(._1).map(t=>{
(t._1,t.2.size)}).toList.sortBy(._2)
关于分词时的详细操作
new JiebaSegmenter().sentenceProcess(x._2+x.3).toArray()
分词 结果是LIst(array)格式.map(x => (x.toString, 1))将单词变为(单词,1)的形式,.groupBy(._1)按单词进行分组.map(t=>{
(t._1,t.2.size)})将数据变成(单词,单词在每篇文章中的出现次数)
.toList.sortBy(._2)转为List按出现次数排序
val objFile=sc.objectFile(String,Int)
读取object文件(只能在spark中用rdd打开的)
致此 所有spark实验做完,以尽力。旅途完成。
关于map和flatMap的区别
可以认为flatMap是在做map后进行扁平化
map传入10行传出也是10行
flatMap则不是 一般大于10行
flatMap单纯用于一对一转换则和map相同
如果处理后是个List或者Array类型,那么就会将这个List或者Array的每个元素变成1行,也就是将这个List或者Array合在一起
spark实验总结
最新推荐文章于 2023-11-21 00:17:14 发布