分享

Spark Scala

用scala 编写一个通过时间找到对应的ip ,然后按时间排序  文本txt我共享了,大神帮忙一下..........用,划分,iptv是那个ip, 20171123120027那一列时间    ,怎们用scala编写..................
00|iptv2014070803|20171123120027|08
00|iptv2014030803|20171123120032|01
00|iptv2014050901|20171123120056|08
00|iptv2014070803|20171123120057|08
00|iptv2014030803|20171123120102|01
00|iptv2014050901|20171123120126|08
00|iptv2014070803|20171123120127|08
00|iptv2014030803|20171123120132|01
00|iptv2014050901|20171123120156|08
00|iptv2014070803|20171123120157|08
00|iptv2014030803|20171123120202|01
00|iptv2014050901|20171123120226|08
00|iptv2014070803|20171123120227|08





已有(6)人评论

跳转到指定楼层
逆光之处是快乐 发表于 2017-11-27 13:47:56
就是想通过时间找到对应的ip,然后再按时间进行排序
回复

使用道具 举报

hutonm 发表于 2017-11-27 14:11:35
划分成为 时间:ip 然后对时间进行排序 可以吗?
回复

使用道具 举报

逆光之处是快乐 发表于 2017-11-27 14:29:28
恩,我的意思就是通过那个时间找到对应的ip,然后按时间进行排序
回复

使用道具 举报

hutonm 发表于 2017-11-27 14:39:09
  def main(args: Array[String]): Unit = {
        val spark = SparkSession
                  .builder()
                  .master("local[2]")
                  .appName("iptime")
                  .getOrCreate()

        val filerdd = spark.sparkContext.textFile("f:\\iptime.txt")
        val result = filerdd.map(line =>{
          val lineArray = line.split("\\|")
          (lineArray(2),lineArray(1).substring(4))
        }).sortByKey()
        println(result.collect.toBuffer)
  }
回复

使用道具 举报

desehawk 发表于 2017-11-27 14:42:40
本帖最后由 desehawk 于 2017-11-27 14:46 编辑

首先我这里将这个文件保存为question.txt文件,并且上传到hdf。

aboutyun.jpg

然后进入spark-shell去读取这个文件,这里使用的是spark2
首先通过SparkSesstion创建sparkcontext
[mw_shl_code=scala,true] val sc=spark.sparkContext[/mw_shl_code]
然后读取文件
[mw_shl_code=scala,true]val file=sc.textFile("/question.txt")[/mw_shl_code]
baocun.jpg

我们来看读取的内容
读取内容.jpg

这时候我们就可以操作了
比如我们寻找时间为:20171123120027的列:
[mw_shl_code=scala,true]val query= file.filter(x=>x.contains("20171123120027"))[/mw_shl_code]
这样query里面就是我们想要得到的内容,我们打印query
结果.jpg

ok,这样就得到我们想要的结果了。如果排序,可以在后面在加上.sortByKey()







回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条