Struct Streaming

spark进行实时数据流计算时有两个工具

Spark Streaming:编写rdd代码处理数据流,可以解决非结构化的流式数据

Structured Streaming:编写df代码处理数据流,可以解决结构化和半结构化的流式数据

实时计算

实时计算,通常也称为“实时流计算”、“流式计算”

流数据处理是指实时、连续地处理数据流。数据在被产生或接收后立即处理,并不需要等待所有数据到齐。数据的处理和传输是“逐条”进行的。

处理时间:由于数据被实时处理,系统响应时间非常短,通常在毫秒或秒级。

数据量:流数据通常是无限的,数据持续不断地被生成和处理,系统需要持续运行。

公司活动需要实时查看活动效果,适合短期时间的计算

离线计算

离线计算,通常也称为“批处理”,表示那些离线批量、延时较高的静态数据处理过程。

批数据处理是指在一个预定时间内收集一批数据,然后一次性对这批数据进行处理。数据是成批处理的,而不是逐条处理。

处理时间:批处理通常不是实时的,处理的延迟可能是分钟、小时甚至更长,T+1。

数据量:批处理通常在所有数据收集完毕后进行,这意味着处理的数据集是固定大小的(如每日、每小时的数据)。数据处理完成后自动结束

固定指标计算,需要每天查看的数据内容

 有界和无界数据

  • 有界数据

    • 有起始位置,有结束位置。比如文件数据 有起始行,有结束行

    • 有明确的数据容量大小。处理数据时就能知道处理的数据大小

    • 在处理数据时,按批次处理。

    • 数据处理完成程序就结束

    • 离线计算时处理的都是有界数据

  • 无界数据

    • 有起始位置,没有结束位置,知道数据的起始位置在哪里,但是数据到哪结束不知道(因为数据在不断产生,什么时候结束不知道)

    • 流式数据都是无界数据

    • 无界数据的总量是不确定,数据是不断产生的

    • 数据有时效性 (有效期)

    • 处理无界数据时,程序时持续运行的

实现

1)需要安装ncat服务 

在线安装:yum install nc

离线安装:rpm -ivh ncat-7.93-1.x86_64.rpm

2)启动服务绑定端口号:9999(若这个端口号被占用,可以换没有占用的端口号)

Structured Streaming代码程序

  • 使用的是sparkSQl,所以在进行代码编写使用sparksql的方法进行编写

  • 使用sparksession

3)执行代码

# 读取socket产生的实时数据流
from pyspark.sql import SparkSession

ss = SparkSession.builder.getOrCreate()
# 数据流读取使用readStream
option = {
    # 指定读取的socket服务的ip地址
    'host': '192.168.88.100',
    # 指定读取的端口
    'port': 9999
}
# 将读取的流式数据转为无界表保存在dataframe
df = ss.readStream.load(format='socket', **option)

# df数据处理


# 数据的输出展示
# format 指定输出的服务  console 输出终端界面   kafka  csv   json   es
# outputMode 输出模式   append  complete  update
# awaitTermination 让程序阻塞等待,可以是实现程序持续运行获取实时数据
df.writeStream.start(format='console',outputMode='append').awaitTermination()

 4)在终端输入数据

5)查看运行结果,满足条件输出,不满足条件为空 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值