Spark写入kafka(批数据和流式)

Spark写入(批数据和流式处理)

Spark写入kafka批处理

写入kafka基础

复制代码
# spark写入数据到kafka
from pyspark.sql import SparkSession,functions as F

ss = SparkSession.builder.getOrCreate()

# 创建df数据
df = ss.createDataFrame([[9, '王五', 21, '男'], [10, '大乔', 20, '女'], [11, '小乔', 22, '女']],
                        schema='id int,name string,age int,gender string')

df.show()
# todo 注意一:需要拼接一个value
# 在写入kafka时需要拼接一个value
df_kafka = df.select(F.concat_ws(',',df.id.cast('string'),df.name,df.age.cast('string'),df.gender).alias('value'))
df_kafka.show()

# 将df写入kafka
# todo 注意二:这个和读取kafka时的配置是一样,不过这里应该是没有读取起始量和读取结束量
options = {
    # 指定kafka的连接的broker服务节点信息
    'kafka.bootstrap.servers': 'node1:9092',
    # 指定写入主题
    'topic': 'user'
}
df_kafka.write.save(format='kafka', mode='append', **options)

kafka写入策略

复制代码
# kafka数据写入策略
from pyspark.sql import SparkSession,functions as F

ss = SparkSession.builder.getOrCreate()


# 创建df数据
df = ss.createDataFrame([[200, '王五22222', 21, '男'], [201, '大乔22222', 20, '女'], [202, '小乔2222', 22, '女']],
                        schema='id int,name string,age int,gender string')

df.show()

# 在写入kakfa时需要拼接一个value
# # df_kafka = df.select(F.concat_ws(',',df.id.cast('string'),df.name,df.age.cast('string'),df.gender).alias('value'),F.lit(1).alias('partition'))
# # df_kafka.show()

# 指定分区 增加一个分区字段
options = {
    # 指定kafka的连接的broker服务节点信息
    'kafka.bootstrap.servers': 'node1:9092',
    # 指定写入主题
    'topic': 'user',
}
# df_kafka.write.save(format='kafka', mode='append', **options)



# 指定key  会key进行hash计算,相同key的数据会写入同一分区
# hash(key)%分区数  =
# df_kafka = df.select(F.concat_ws(',',df.id.cast('string'),df.name,df.age.cast('string'),df.gender).alias('value'),df.gender.alias('key'))
# df_kafka.show()

# 同时指定key和partition  按照分区写入
df_kafka = df.select(F.concat_ws(',',df.id.cast('string'),df.name,df.age.cast('string'),df.gender).alias('value'),df.gender.alias('key'),F.lit(2).alias('partition'))
df_kafka.show()

df_kafka.write.save(format='kafka', mode='append', **options)

写入kafka应答响应级别

复制代码
# spark写入数据到kafka
# 指定ack应答级别
from pyspark.sql import SparkSession, functions as F

ss = SparkSession.builder.getOrCreate()

# 创建df数据
df = ss.createDataFrame([[9, '王五', 21, '男'], [10, '大乔', 20, '女'], [11, '小乔', 22, '女']],
                        schema='id int,name string,age int,gender string')

df.show()

# 在写入kakfa时需要拼接一个value
df_kafka = df.select(F.concat_ws(',', df.id.cast('string'), df.name, df.age.cast('string'), df.gender).alias('value'))
df_kafka.show()

# 将df写入kafka
options = {
    # 指定kafka的连接的broker服务节点信息
    'kafka.bootstrap.servers': 'node1:9092',
    # 指定写入主题
    'topic': 'user',
    # 指定级别
    'acks':'all'
}
df_kafka.write.save(format='kafka', mode='append', **options)

Sprak写入kafka流式处理

相关推荐
用户14944848132010 小时前
同为消息队列,RocketMQ 和 Kafka 的底层设计差在哪?
kafka
开开心心就好14 小时前
办公软件卸载不干净?专用工具一键清残留
java·前端·人工智能·智能手机·kafka·excel·memcache
计算机源码社15 小时前
基于Spark的租房数据挖掘与可视化平台构建研究 基于K-Means与PCA的租房价值洞察与可视化分析
大数据·hadoop·数据挖掘·spark·毕业设计·kmeans·课程设计
IT毕设梦工厂16 小时前
计算机毕业设计选题推荐:基于大数据的巧克力销售数据分析与可视化|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hadoop·mysql·数据挖掘·数据分析·spark·课程设计
FYKJ_201017 小时前
springboot家政服务平台66766-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·mysql·spark·课程设计
IT毕设梦工厂17 小时前
计算机毕业设计选题推荐:基于大数据的青少年体质健康数据可视化与分析|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hadoop·信息可视化·数据挖掘·数据分析·spark·课程设计
ly76892 天前
ISR 收缩与 HW 推进:副本同步的边界条件与 UnderReplicated 排障
数据库·kafka·c#·linq·isr·hw·副本同步
FYKJ_20102 天前
SSM校园互助与闲置交易平台62145-计算机课程设计、毕业设计
java·spring boot·python·mysql·架构·spark·课程设计
IT研究室3 天前
最新大数据毕业设计选题推荐-基于大数据的全球地震数据分析与可视化-大数据-Spark-Hadoop-Bigdata
大数据·信息可视化·数据分析·spark·课程设计
FYKJ_20103 天前
SSM校园失物招领系统41452-计算机课程设计、毕业设计
java·vue.js·spring boot·python·mysql·typescript·spark