12 2018 档案

摘要:[TOC] 本文是原项目的一次重写。主要是用DataFrame代替原来的RDD,并在一些实现上进行优化,还有就是实时流计算改用Flink进行实现。 项目分为用户访问session模块、页面转跳转化率统计、热门商品离线统计和广告流量实时统计四部分组成。 业务需求 用户访问session 该模块主要是对 阅读全文
posted @ 2018-12-30 18:03 justcodeit 阅读(4622) 评论(0) 推荐(3)
摘要:[TOC] 项目概要 需求 手机应用日志 定期离线分析手机应用新增用户、活跃用户、沉默用户、启动次数、版本分布和留存用户等业务指标。 工作流程 1. 手机APP启动时,上报启动日志、错误日志、页面日志、事件日志、使用时长日志等信息到日志收集服务器。 2. 日志收集服务器将收集到的日志信息发送给kaf 阅读全文
posted @ 2018-12-27 22:28 justcodeit 阅读(963) 评论(0) 推荐(0)
摘要:leetcode:75颜色分类(3way)、215数组中的第K个最大元素(normal) 3way normal 注意这里用for循环!!! java public int findKthLargest(int[] nums, int k) { // 左右指针,调整k int left = 0, r 阅读全文
posted @ 2018-12-25 23:27 justcodeit 阅读(868) 评论(0) 推荐(0)
摘要:[TOC] 本文积累一些高效的scala写法。 Ordering toSeq is not good idea because driver needs to put this in memory 但是通过函数传递ordering的方式比较慢,直接Ordering.by创建内置的Ordering,或 阅读全文
posted @ 2018-12-25 23:16 justcodeit 阅读(416) 评论(0) 推荐(0)
摘要:[TOC] 1.wordcount 利用socket作为数据源,对输入的每行数据进行单词计数。计算频率为process time的每10秒一次,结果输出到terminal。 数据格式 2.双流警报EventTime 时间特征为event time,每1s更新一次watermark,watermark 阅读全文
posted @ 2018-12-22 22:25 justcodeit 阅读(890) 评论(0) 推荐(0)
摘要:Implementing Stateful Functions source function的stateful看官网,要加lock Declaring Keyed State at the RuntimeContext state可通过 rich functions 、Listcheckpoint 阅读全文
posted @ 2018-12-22 22:21 justcodeit 阅读(1424) 评论(0) 推荐(0)
摘要:[TOC] 本文API基于1.4以上 Configuring Time Characteristics 非key Stream的window operator并行度为1 Process Time 所有operator会按照系统时间来判断是否触发计算。如果作业是在9:15am开始的,且设置了1h的间隔 阅读全文
posted @ 2018-12-22 22:08 justcodeit 阅读(767) 评论(0) 推荐(0)
摘要:[TOC] 本文API基于Flink 1.4 注意,map、flatMap算子需要TypeInformation的隐式转换,即implicit val typeInfo = TypeInformation.of(classOf[map后的类型])。但更好的办法是 或 静态数据 从map到apply都 阅读全文
posted @ 2018-12-22 22:05 justcodeit 阅读(1013) 评论(0) 推荐(0)
摘要:[TOC] Spark SQL/DF的执行过程 将上层的SQL语句映射为底层的RDD模型。 写代码(DF/Dataset/SQL)并提交 Parser解析后得到unresolved logical plan(代码合法但未判断data是否存在、数据类型) Analyzer分析对比Catalog(里面绑 阅读全文
posted @ 2018-12-22 21:59 justcodeit 阅读(3438) 评论(0) 推荐(0)
摘要:[TOC] 下面调优主要基于2.0以后。 代码优化 1.语言选择 如果是ETL并进行单节点机器学习,SparkR或Python。优点:语言相对简单;缺点:使用语言自身的数据结构时,效率低,因为这些数据需要转换。 如果用到自定义transformations或自定义类,Scala或Java。优点:性能 阅读全文
posted @ 2018-12-22 21:55 justcodeit 阅读(2526) 评论(0) 推荐(0)
摘要:[TOC] System Architecture 分布式系统需要解决:分配和管理在集群的计算资源、处理配合、持久和可访问的数据存储、失败恢复。Fink专注分布式流处理。 Components of a Flink Setup JobManager :接受application,包含StreamGr 阅读全文
posted @ 2018-12-15 14:19 justcodeit 阅读(52044) 评论(4) 推荐(3)
摘要:Kafka总结 [TOC] 什么是kafka:分布式流处理平台。主要三个特点:可以发布和订阅消息的系统;可容错且持久地存储流记录;流计算。通常使用前两个特征。 发布订阅信息系统一般规则 :消费者可订阅多个topic(消息队列),同一条数据可被多个消费者消费,消息被消费后不会被立刻删除。 概念 Bro 阅读全文
posted @ 2018-12-15 13:23 justcodeit 阅读(587) 评论(0) 推荐(0)
摘要:[TOC] 166分数到小数 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。 思路: 分母、分子为0的情况 新建StringBuilder 结果是否为负数,是则加上负号 分子分母取绝对值 阅读全文
posted @ 2018-12-11 01:44 justcodeit 阅读(211) 评论(0) 推荐(0)
摘要:[TOC] BitMap 思路: 构造函数:取商作为长度,如果有余,则长度+1 set和get思路都是先取参数在bitmap中的index和offset,注意转化为int,然后进行相应的操作。 数据范围从0开始 最小栈 思路: 新建两个栈 push和pop中,s1照常执行。s2判断其顶部元素是否大于 阅读全文
posted @ 2018-12-11 01:43 justcodeit 阅读(215) 评论(0) 推荐(0)
摘要:[TOC] 144前序遍历 思路:(循环前入栈、先右节点入栈) 建栈,入栈,循环,只要栈不为空 出栈,把值加入res。 如果右不为空,入栈。左一样。 94中序遍历(98验证二叉搜索树、230二叉搜索树中第K小的元素) 思路: 建栈、cur指针,不入栈循环,只要cur和栈不为空 只要cur不为空,循环 阅读全文
posted @ 2018-12-11 01:41 justcodeit 阅读(268) 评论(0) 推荐(0)
摘要:[TOC] 54/59螺旋矩阵 思路: 设置上下左右四个边界变量 新建ArrayList存储结果 循环:四个循环,左 右,上 下,右 左,下 上。每次循环添加结果,循环后判断边界是否相等了,是的话就退出 62不同路径 一个机器人位于一个 m x n 网格的左上角 。机器人每次只能向下或者向右移动一步 阅读全文
posted @ 2018-12-11 01:40 justcodeit 阅读(313) 评论(0) 推荐(0)
摘要:[TOC] 78/90子集 39/40组合总和 40(39是无重复元素的数组,所以省去排序。另外允许重复选取元素,所以递归调用函数时index不需要+1) 给定一个数组 和一个目标数 ,找出 中所有可以使数字和为 的组合。 中的每个数字在每个组合中只能使用一次。 所有数字(包括目标数)都是正整数。 阅读全文
posted @ 2018-12-11 01:39 justcodeit 阅读(239) 评论(0) 推荐(0)
摘要:[TOC] 3无重复字符的最长子串 思路: 新建数组int[128],用来记录各个字符处在字符串中的最新位置。注意位置从1开始,一方面区别默认的0,另一方面,下面调整left的值时,可以直接移动到刚好去掉重复字符的位置。 设置左右边界,右为遍历中的i 每遇到新的字符,看是否需要调整left位置。取当 阅读全文
posted @ 2018-12-11 01:29 justcodeit 阅读(184) 评论(0) 推荐(0)
摘要:[TOC] 2/445两数相加 2两数相加(链表倒排结果) 思路: 设置dummy,结果指针p 遍历,只要其中一个没有遍历完就继续; 如果l1不为空,加到sum,l1移到下一位 如果l2不为空,加到sum,l2移到下一位 p指向新节点(sum % 10), p移到下一位 sum /= 10 判断最后 阅读全文
posted @ 2018-12-11 01:25 justcodeit 阅读(162) 评论(0) 推荐(0)
摘要:[TOC] 4寻找两个有序数组的中位数 思路: 其中一个为空的情况,利用len/2和(len 1)/2两个结果来求中位数 两者不为空,调用helper 当其中一个被筛选完,就选另一个的left + k 当两个数组都还有候选数字,而k减到0时,取两个数组中的left最小者 k未到0时,分别从两者中取( 阅读全文
posted @ 2018-12-11 01:19 justcodeit 阅读(228) 评论(0) 推荐(0)
摘要:[TOC] 33/81搜索旋转排序数组 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 可能变为 )。 思路: 设置左右指针开始进入二分循环 判断中间的数是否为target,否则通过比较nums[mid] 注意包含边界与target的比较,如nums[left] = left 阅读全文
posted @ 2018-12-11 01:15 justcodeit 阅读(198) 评论(0) 推荐(0)
摘要:[TOC] 1.数据倾斜 来源:读取数据之后,包括从数据源读取和shuffle后读取 后果:大部分task和小部分task完成时间相差很大、OOM(也有可能时异常数据的问题,需要完善代码)。 分析:用sample + countBykey 除以count判断key的分布情况。 解决方法: 1. 采用 阅读全文
posted @ 2018-12-11 01:11 justcodeit 阅读(2218) 评论(0) 推荐(0)