- 博客(27)
- 收藏
- 关注
原创 6.8日LC
题目进展题号状态思想103. 二叉树的锯齿形层次遍历完成1、BFS,我习惯用两层遍历,外层是BFS的层数,里层是每一层的个数。2、DFS,dfs方法的时候增加level int的字段,将此次结点的值放入对应的第leval个list中104. 二叉树的最大深度完成简单的DFS105. 从前序与中序遍历序列构造二叉树完成递归就完事儿了106. 从中序与后序遍历序列构造二叉树未完成107. 二叉树的层次遍历 II完成DFS简单知识汇总1、
2020-09-03 15:49:17
113
原创 Spark算子
从大方向来说,Spark 算子大致可以分为以下两类: 1)Transformation 变换/转换算子:这种变换并不触发提交作业,完成作业中间过程处理。Transformation 操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算。 2)Action 行动算子:这类算子会触发 SparkContext 提交 Job 作业。Action 算子会触发 Spark 提交作业(Job),并将数据输出 Spark系
2020-09-03 15:48:43
172
原创 小文件问题
0.前述数据平台有篇文章写得很好,大家可以参考Spark Hive 小文件合并我这里做个简化版的讲述1.危害小文件的最大危害是拖慢任务执行时间,甚至会引发OOM2.单分区的小文件合并一个任务不管是spark还是mapreduce,大致的执行过程都是如下图所示如图,我们可以在上面三个stage中进行小文件的合并阶段1:map合并,发生在split操作,可以解决输入小文件的合并(也可以解决只有map阶段的输出小文件合并),方式是把多个小文件合并成一个数据分片(split),进而交给一个map
2020-09-03 15:48:31
1126
1
原创 Spark中Task数量的分析
开始先说明一下Spark作业的几个核心概念:Job(作业):Spark根据行动操作触发提交作业,以行动操作将我们的代码切分为多个Job。Stage(调度阶段):每个Job中,又会根据宽依赖将Job划分为多个Stage(包括ShuffleMapStage和ResultStage)。Task(任务):真正执行计算的部分。Stage相当于TaskSet,每个Stage内部包含了多个Task,将各个Task下发到各个Executor执行计算。每个Task的处理逻辑完全一样,不同的是对应处理的数据。即:移动
2020-09-03 15:47:51
1518
1
原创 hive行转列、列转行、 数组函数、拆数组函数
collect_list 、collect_set测试数据:username,video_name张三,大唐双龙传李四,天下无贼张三,神探狄仁杰李四,霸王别姬李四,霸王别姬王五,机器人总动员王五,放牛班的春天王五,盗梦空间select username ,collect_list(video_name)from table1 group by username测试结果 :将collect_list替换为collect_set结果:结论:collect_set和
2020-09-03 15:47:39
1829
原创 hive分析窗口函数
1、lag()LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)select id ,addtime ,lag(addtime,1,'1999.01.01') over(partition by id order by addtime); from table1;2、lead()与LAG相反LEAD(col,n,D
2020-09-03 15:46:28
71
原创 工作遇到的坑:偶然性数据重复问题case排查
先说结论:尽量杜绝不同数据类型的数据做计算和比较,会出现各种奇奇怪怪的问题问题描述:图谱中有关用户活跃度的数据,不定时(大约1-2个月)会出现一次数据重复。代码不修改,当天重跑一次后,问题解决,无法复现。问题追踪:首先发现执行日志中有一个警告信息在这里插入图片描述推测应该是不同数据类型转换带来的问题找到具体代码,发现确实有不同的数据类型放在join的条件中原因深入分析,为什么不同数据类型关联会导致重复?因为不同数据类型在进行运算或比较时,会先【隐式】转换成【共同的】【更大范围的】数据类型
2020-09-03 15:46:08
830
原创 数据倾斜优化
数据倾斜发生时的现象绝大多数task执行得都非常快,但个别task执行极慢。比如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三个task却要一两个小时。这种情况很常见。原本能够正常执行的Spark作业,某天突然报出OOM(内存溢出)异常,观察异常栈,是我们写的业务代码造成的。这种情况比较少见。数据倾斜发生的场景输入倾斜shuffle倾斜(99%的场景)膨胀倾斜shuffle倾斜一、数据倾斜发生的原理数据倾斜的原理很简单:在进行shuffle的时候,必须将
2020-09-03 15:45:39
615
原创 2020.5.23_LC
题目进展题号状态思想82. 删除排序链表中的重复元素 II完成边界的处理问题可以使用哑结点,重复的全部删除可以采用pre和cur相差两个结点,方便处理cur.next==null的情况83. 删除排序链表中的重复元素完成循环{ 如果cur.val=cur.next.val那么cur.next = cur.next.next; }86. 分隔链表完成注意头尾,第二段尾结点加上.next=null,来避免出现环形结点88. 合并两个有序数组完成简单题
2020-05-31 00:13:09
90
原创 2020.5.23_LC
题目进展题号状态思想70. 爬楼梯完成动态规划(dynamic programming)71. 简化存储路径完成遇到需要去掉一些重复以及特性规律的字符时可以考虑使用栈73. 矩阵置零完成遇到需要去掉一些重复以及特性规律的字符时可以考虑使用栈知识积累:Deque:双端队列,既可以当栈也可以当队列使用(栈:添加弹出数据都在first,队列:添加在last,弹出在first)Java中实际上提供了java.util.Stack来实现栈结构,但官方目前已不
2020-05-24 09:32:52
108
原创 2020.5.18_LC
题目进展题号状态思想67. 二进制求和完成第一种方法:直接创建临时int进行加的操作;第二种方法:按位运算进行求和,通过按位异或xor得到不算进位的和,再用and+shiftLeft得到进位数,一直while到进位数为0(compareTo(BigInteger(0,2))==0)停止循环,即可得到最终结果;67. 二进制求和完成第一种方法:直接创建临时int进行加的操作;第二种方法:按位运算进行求和;知识点总结:BigIntegerBigInteger不
2020-05-18 23:56:15
113
原创 2020.5.16_LC
题号状态思想56题.合并区间已完成贪婪算法58题.最后一个单词的长度已完成直接从后面查找,利用双指针,避免不必要的查询59题.旋转矩阵已完成创建两个4维数组来代替4个方向,复杂度O(N)...
2020-05-17 00:04:36
119
原创 贪心算法
「力扣」第 12 题:整数转罗马数字,贪心思想更多来源于直觉;「力扣」第 452 题:用最少数量的箭引爆气球,画图发现贪心策略;「力扣」第 122 题:买卖股票的最佳时机 II,需要简单推导了;「力扣」第 55 题: 跳跃游戏,画图思考;「力扣」第 56 题: 求重叠区间,画图思考;「力扣」第 435 题: 无重叠区间,画图思考;「力扣」第 455 题:分发饼干;「力扣」第 343 题: 整数拆分,需要简单推导。「力扣」第 300 题:最长上升子序列,本质上还是动态规划,只不过在推导的过程中
2020-05-16 22:23:48
241
1
原创 MapReduce原理
MapReduce是一个基于集群的计算平台,是一个简化分布式编程的计算框架,是一个将分布式计算抽象为Map和Reduce两个阶段的编程模型由图我们可以看到, MapReduce存在以下4个独立的实体。JobClient:运行于client node,负责将MapReduce程序打成Jar包存储到HDFS,并把Jar包的路径提交到Jobtracker,由Jobtracker进行任务的分配和监...
2020-05-08 19:43:23
169
原创 sparksql电商项目调优
1、性能调有、压缩格式的选择压缩方式考虑两个方面:压缩速度、压缩文件的可分割性。Bzip2压缩效果是最好的,但是Bzip2压缩速度慢,可分割;Gzip压缩效果不如Bzip2,但是压缩解压速度快,不支持分割;LZO压缩效果不如Bzip2和Gzip,但是压缩解压速度快,并且支持分割;2、参数优化调整并行度:spark.sql.shuffle.partitions :默认200分区字段...
2020-03-07 21:38:47
114
原创 Spark作业提交到yarn上面运行遇到的坑
报错:16/10/18 14:09:15 WARN YarnSchedulerBackend$YarnSchedulerEndpoint: Attempted to get executor loss reason for executor id 1 at RPC address jxwy10:37510, but got no response. Marking as slave lost....
2020-03-07 12:09:05
1581
原创 常见Spark算子
转换操作1.mapmap的输入变换函数应用于RDD中所有元素,而mapPartitions应用于所有分区。区别于mapPartitions主要在于调用粒度不同。如parallelize(1 to 10, 3),map函数执行10次,而mapPartitions函数执行3次。2.filter(function)过滤操作,满足filter内function函数为true的RDD内所有元素组...
2020-02-23 11:34:40
124
原创 数据与结构笔记(一)
数据与结构笔记(一)二叉树:前序顺序是ABC(根节点排最先,然后同级先左后右);中序顺序是BAC(先左后根最后右);后序顺序是BCA(先左后右最后根)前:ADBGEHCF中:DBGEHACF后:DGHEBFCA二分法:斐波那契数列斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)...
2020-02-23 00:10:19
120
转载 Numpy的random函数总结
经常用到np.random,然而函数种类过多往往记不住或混淆,特此再次梳理一下。import numpy as np1 numpy.random.rand()numpy.random.rand(d0,d1,…,dn)rand函数根据给定维度生成[0,1)之间的数据,包含0,不包含1dn表格每个维度返回值为指定维度的arraynp.random.rand(4,2)array([[ 0...
2019-01-13 18:17:54
361
转载 深度学习加入层简单的函数
def add_layer(inputs,input_size,output_size,activation_function=None):with tf.variable_scope(“Weights”):Weights = tf.Variable(tf.random_normal(shape=[input_size,output_size]),name=“weights”)with tf...
2018-11-25 15:42:35
136
原创 深度学习打乱引入数据常用方法np.random.shuffle
def gen_data(source):while True:indices = range(len(source.images)random.shuffle(indices)for i in indices:image = np.reshape(source.images[i], (28, 28, 1))label = source.labels[i]
2018-11-20 13:42:27
2330
转载 git学习笔记
git与github学习笔记第一步,用命令git add告诉Git,把文件添加到仓库:$ git add readme.txt第二步,用命令git commit告诉Git,把文件提交到仓库:$ git commit -m “wrote a readme file”[master (root-commit) eaadf4e] wrote a readme file1 file chang...
2018-11-18 20:18:00
72
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人