1.环境

jdk : 1.8

scala : 2.11.7

hadoop:2.7

spark : 2.2.0

2. 开发工具

idea 2017.2

3.maven的pom文件

<dependencies>
<!-- https://mvnrepository.com/artifact/com.sun/tools -->
<!-- https://mvnrepository.com/artifact/org.apache.maven/maven-core -->
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
</dependencies>

4.sparkStreaming通过本地的socket端口解析日志

package test02

import org.apache.spark.SparkConf
import org.apache.spark.streaming.Seconds
import org.apache.spark.streaming.StreamingContext object demo5 {
def main (args : Array[String]) {
val conf = new SparkConf().setMaster("local[4]").setAppName("SaprkApp")
val ssc = new StreamingContext(conf, Seconds(10))
val lines = ssc.socketTextStream("localhost", 9999) //测试数据 : 2017-07-18 11:02:52.032 INFO 172.31.20.232:56965 18583551@170718110244697@172.31.33.81 PUBLIC_USER_LOGIN(0202)-0 create session for 18583551/18583551@170718110244697@172.31.33.81
val loginRDD = lines.map(line =>{
val pattern = """^(\S+\s\d+\:\d+\:\d+\.\d{3})\s+\S+\s+(\d+\.\d+.\d+\.\d+):\d+\S+\s+(\d+)@(\S+)@\S+\s+PUBLIC_USER_LOGIN\(0202\)-0\s+create session for.*""".r
var login_time = ""
var ip_address = ""
var passport_id = ""
var session_id = ""
var scene_name = "login"
pattern.findAllIn(line).matchData foreach{m =>{
login_time = m.group(1)
ip_address = m.group(2)
passport_id = m.group(3)
session_id = m.group(4) println(login_time)
println(ip_address)
println(passport_id)
println(session_id) }}
(login_time,ip_address,passport_id,session_id,scene_name)
})
val loginRes = loginRDD.filter(_._1 != "").filter(_._2 != "")
loginRes.print() //测试数据 : 2017-07-18 11:03:44.312 INFO 0.0.0.0:18402 26639185@170718110334147@172.31.32.135 ADMIN_SYSTEM_SUCCESS(00FE)-84581 -> USER_DISCONNECTED Time cost 9.09ms
val logoutRDD = lines.map(line =>{
val pattern = """^(\S+\s\d+\:\d+\:\d+\.\d{3})\s+\S+\s+(\d+\.\d+\.\d+\.\d+):\d+\S+\s+(\d+)@(\S+)@.*(disconnected|DISCONNECTED).*""".r
var login_id = ""
var ip = ""
var passport_id = ""
var str = ""
var scene_name = "logout"
pattern.findAllIn(line).matchData foreach{m =>{
login_id = m.group(1)
ip = m.group(2)
passport_id = m.group(3)
str = m.group(4) println(login_id)
println(ip)
println(passport_id)
println(str) }}
(login_id,ip,passport_id,str)
})
val logoutRes = logoutRDD.filter(_._1 != "").filter(_._2 != "")
logoutRes.print()
logoutRes.saveAsTextFiles("/Users/huiliyang/streaming/aa") //测试数据 : 2017-08-27 06:04:38.420 [info] <0.3471.83> 172.31.2.201:59154 70281275 PUBLIC_SERVER_CLIENT_LOG(258)-0 LovelyStreet:1228
val eventRDD = lines.map(line =>{
val pattern = """^(\S+\s\d+\:\d+\:\d+\.\d{3})\s+\[info\]\s<[\d\.]*>\s?(\d+\.\d+\.\d+.\d+):\d+\S+\s+\S?([1-9]\d{7})(@\d+@\d+\.\d+\.\d+\.\d+)?\S?\s+PUBLIC_(SERVER|SYSTEM)_CLIENT\S+\s(\S+):(\d+)""".r
var login_time = ""
var ip_address = ""
var passport_id = ""
var session_id = ""
var str1 = ""
var str2 = ""
var str3 = ""
pattern.findAllIn(line).matchData foreach{m =>{
login_time = m.group(1)
ip_address = m.group(2)
passport_id = m.group(3)
session_id = m.group(4)
str1 = m.group(5)
str2 = m.group(6)
str3 = m.group(7) println(login_time)
println(ip_address)
println(passport_id)
println(session_id)
println(str1)
println(str2)
println(str3) }}
(login_time,ip_address,passport_id,session_id,str1,str2,str3)
})
val eventRes = eventRDD.filter(_._1 != "").filter(_._2 != "")
eventRes.print() ssc.start()
ssc.awaitTermination() }
}

sparkStreaming入门的更多相关文章

  1. 大数据学习day32-----spark12-----1. sparkstreaming(1.1简介,1.2 sparkstreaming入门程序(统计单词个数,updateStageByKey的用法,1.3 SparkStreaming整合Kafka,1.4 SparkStreaming获取KafkaRDD的偏移量,并将偏移量写入kafka中)

    1. Spark Streaming 1.1 简介(来源:spark官网介绍) Spark Streaming是Spark Core API的扩展,其是支持可伸缩.高吞吐量.容错的实时数据流处理.Sp ...

  2. SparkStreaming入门及例子

    看书大概了解了下Streaming的原理,但是木有动过手啊...万事开头难啊,一个wordcount 2小时怎么都运行不出结果.是我太蠢了,好了言归正传. SparkStreaming是一个批处理的流 ...

  3. SparkStreaming个人记录

    一.SparkStreaming概述 SparkStreaming是一种构建在Spark基础上的实时计算框架,它扩展了Spark处理大规模流式数据的能力,以吞吐量高和容错能力强著称. SparkStr ...

  4. Spark Streaming——Spark第一代实时计算引擎

    虽然SparkStreaming已经停止更新,Spark的重点也放到了 Structured Streaming ,但由于Spark版本过低或者其他技术选型问题,可能还是会选择SparkStreami ...

  5. 大数据入门第二十四天——SparkStreaming(二)与flume、kafka整合

    前一篇中数据源采用的是从一个socket中拿数据,有点属于“旁门左道”,正经的是从kafka等消息队列中拿数据! 主要支持的source,由官网得知如下: 获取数据的形式包括推送push和拉取pull ...

  6. 大数据入门第二十四天——SparkStreaming(一)入门与示例

    一.概述 1.什么是spark streaming Spark Streaming is an extension of the core Spark API that enables scalabl ...

  7. 使用scala开发spark入门总结

    使用scala开发spark入门总结 一.spark简单介绍 关于spark的介绍网上有很多,可以自行百度和google,这里只做简单介绍.推荐简单介绍连接:http://blog.jobbole.c ...

  8. Spark入门实战系列--1.Spark及其生态圈简介

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .简介 1.1 Spark简介 年6月进入Apache成为孵化项目,8个月后成为Apache ...

  9. Spark入门实战系列--6.SparkSQL(下)--Spark实战应用

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .运行环境说明 1.1 硬软件环境 线程,主频2.2G,10G内存 l  虚拟软件:VMwa ...

随机推荐

  1. 得益于AI,这五个行业岗位需求将呈现显著增长趋势

    得益于AI,这五个行业岗位需求将呈现显著增长趋势 人工智能与人类工作是当下许多人津津乐道的一个话题,而讨论的重点大多是围绕在"未来人工智能会不会抢走我们的工作"这个方面.本文作者 ...

  2. Flex birdeye笔记

    1.将官网示例demo运行起来 新建Flex项目,直接将官网src下的demo拷贝到新建的项目的src下  .将官网example-binaries目录下的文件拷贝到新建项目的bin-debug下即可 ...

  3. C语言进阶学习第三章

    以下记录动态内存分配: 1.malloc和free malloc和free分别用于执行动态内存分配和释放.这些函数维护一个可用内存池,当一个程序需要一些内存时,调用malloc函数,malloc从内存 ...

  4. PAT_A1064#Complete Binary Search Tree

    Source: PAT A1064 Complete Binary Search Tree (30 分) Description: A Binary Search Tree (BST) is recu ...

  5. <pygame> 打飞机(小游戏)

    0.游戏的基本实现 ''' 游戏的基本实现 游戏的初始化:设置游戏窗口,绘制图像的初始位置,设定游戏时钟 游戏循环:设置刷新频率,检测用户交互,更新所有图像位置,更新屏幕显示 ''' 1.安装pyga ...

  6. USACO2012 Broken necklace /// DP oj10103

    题目大意: 项链最长的纯色连续段,“w”即white白色珠子,可任意涂为红或蓝,“r” “b”即红 蓝. Input Line 1:  N, the number of beads Line 2:   ...

  7. mycat-zookeepr--mycatweb

    ##############################mycat镜像############################## 5-1 创mycat镜像 wget http://dl.myca ...

  8. 【转】tomcat系统架构分析

    https://blog.csdn.net/wsl211511/article/details/51622991

  9. MongoDB + Spark结合使用方案

    MongoDB上海的活动已经结束快1个月了,我们再来回顾一下TJ在大会上进行的精彩分享吧~ MongoDB + Spark: 完整的大数据计算解决方案. Spark介绍 按照官方的定义,Spark 是 ...

  10. WebApi 路由机制剖析

    阅读目录 一.MVC和WebApi路由机制比较 1.MVC里面的路由 2.WebApi里面的路由 二.WebApi路由基础 1.默认路由 2.自定义路由 3.路由原理 三.WebApi路由过程 1.根 ...