Spark常见问题

Spark中常见问题

Spark中的闭包

闭包则是在driver端声明 excutor端引用 闭包一定经过序列化
在函数内部引用了外部一个变量
会发现以下问题:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20181026172745500.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01fUGlnV215,size_27,color_FFFFFF,t_70)
意思就是没有经过序列化 强调闭包一定要经过序列化!!!

Spark的广播变量

1.在driver端声明,把数据广播到executor端,在executor端引用
2.广播后的数据,是只读的,不可以修改的
3.Rdd不支持广播,rdd不支持嵌套操作
4.广播之后的数据,保证了每个executor中所有task公用的一份数据
5.(具体了解 请关注我!!!)

spark-Streaming连接kafka的两种方法

  1. receiver
  2. 直连

receiver和直连区别

  1. Reciver方式接收固定时间的数据 (放在内存中),但是为了保证数据不丢失 还要将前面接收到的数据 写入Hdfs (wals机制) 使用Kafka高级API 自动维护偏移量 省事 但是 需要等到固定的时间才能处理 效率低
  2. 直连方式 相当于直接连到kafka的分区上 使用 kafka的底层api 效率高 但是需要手动维护偏移量
    如果是直连 先是从driver端读取偏移量 如果没有 就从头读 如果有 就从那开始读 之后 开始提交任务 因为现在是executor之间连到kafka的分区 一个分区 对应一个task 这个task不会消失 一直的处理
    这样处理 是边读边处理 但是 也是按多长时间算一个批次
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值