
Spark
拉丁解牛说技术
大道至简、行胜于言。坚持实用至上,擅长结合大厂生产实践案例,持续专注分享互联网金融技术架构实战经验。
展开
-
spark map操作使用类中定义的方法、变量出现NullpointException或Task not serializable问题解决
spark 计算应用,我们经常使用map、filter、flatmap转换计算,但spark standalone 模式或其他yarn、mesos分布式计算,若要引用其他对象或共享变量,需要用支持Serializable序列化,或使用broadcast定义变量,这样在spark task并发下就可以在多个不同节点的excutor执行正确运算。 在local 模式,map计...原创 2018-08-14 10:37:57 · 1969 阅读 · 0 评论 -
Spark 中的序列化陷阱
转自:https://segmentfault.com/a/1190000012353884Spark 的代码分为 Driver 端执行的部分和 Executor 端执行的部分,Driver 端分发任务的同时,会通过序列化传送 Executor 需要的对象,由于 Java 序列化的一些特性,初学者在使用时容易碰到一些陷阱。陷阱1: 没有序列化最常见的一个错误就是传递的类不可序列化,如下...转载 2018-08-14 10:56:50 · 1871 阅读 · 1 评论 -
spark DataFrame、SQL 求两行某列的差值
有这样的一个需求: 有用户看广告的数据,userid、date、timestamp,现在要求每个用户当前观看广告距离上次多长时间。如果我们能计算好每个广告行为距离上次发生该事件的时间差,我们就可以实现,基于频繁刷广告的行为进行反作弊。 思路: 先按userid,timestamp进行排序,不能进行groupby(userid).sort()。必须userid在前先...原创 2018-09-04 16:35:15 · 9213 阅读 · 1 评论 -
spark 按某几列distinct去重、topN、窗口计算的应用
在spark计算当中,我们日常有些简单需求,比如去重,比如有四列(appid、date、type、platform),我们只需要对appid,date进行去重,另外两列不关注。在spark中,distinct会对所有列执行去重操作,两行比较,只要有个一列有差异,就不算重复。 要解决,只对某几列进行去重,可以使用Top N 的思路,也就是先分组,分组后,我们只取ro...原创 2018-08-30 15:24:49 · 8211 阅读 · 0 评论 -
spark调优-个人日记小抄
内存存储优化 首先认识spark内存的用途,一是用来执行计算,另一个是用来做存储。计算有聚合aggregation、关联jion,排序sort,混洗shuffle。在spark中计算内存和存储内存是共享的,也就是用同一块内存,假如计算资源不够,它会去抢存储内存,但不会抢占全部,把存储内存挤掉,仅仅是将存储内存占比降到一定比例就停止。而且存储内存不足了,它不能去抢用于计算的内存。相关可...原创 2018-09-07 16:03:18 · 178 阅读 · 0 评论 -
SparkSQL-MR、RDD、DataFrame三个编程模型演进
最近看了一些很好的博客文章,转载过来记录一下学习过程。转载自:http://hbasefly.com/2017/02/16/sparksql-dataframe/ SparkSQL 历史回顾对SparkSQL了解的童鞋或多或少听说过Shark,不错,Shark就是SparkSQL的前身。2011的时候,Hive可以说是SQL On Hadoop的唯一选择,负责将SQL解析成MR任务...转载 2018-10-13 12:36:46 · 797 阅读 · 0 评论 -
SparkSQL – Join 的三种方式
转载自:http://hbasefly.com/2017/03/19/sparksql-basic-join/Join常见分类以及基本实现机制 当前SparkSQL支持三种Join算法-shuffle hash join、broadcast hash join以及sort merge join。其中前两者归根到底都属于hash join,只不过在hash join之前需要先sh...转载 2018-10-13 13:35:05 · 20596 阅读 · 0 评论