- 博客(12)
- 收藏
- 关注
原创 Spark中Map和Json字符串相互转换
1. Map转JsonStringMap转Json的String,首先在pom中添加json4s-native的依赖,一般使用如下方式就可以得到结果import org.json4s.jackson.JsonMethods._object Test { def main(args: Array[String]): Unit = { val mapTest = M...
2019-08-06 11:39:35
4237
原创 Spark时间格式转换
在解析客户端日志时常遇到这样的格式:[10/Nov/2016:00:01:02 +0800]使用Spark(scala)如何对这种格式进行转换,转为“2016-11-18 00:00:00”这样的格式呢,可以使用如下的代码实现import java.util.{Date, Locale}import org.apache.commons.lang3.time.FastDateForma...
2019-08-06 11:35:27
3108
1
原创 python生成器和迭代器
生成器 generator 生成器有两种,一种是列表推导的 [] 换成 () 就变成了生成器对象,另一种是使用for遍历含yield关键字的函数。 普通函数是顺序执行,遇到return或者最后一句时返回,而生成器(generator),遇到next()函数时执行,遇到yield时返回,再次执行时从上次执行的yield处继续执行,直到遇到StopIteration异常时停
2018-01-31 00:15:01
178
原创 mysql索引
一 索引的原理和效率原理: 索引是对常用字段建立指针列表(指针为数据记录存储的物理地址),减少磁盘I/O,并使用树结构存储这些指针来提升查找效率.效率: 顺序查找的时间复杂度为O(N),二分查找的时间复杂度为O(log2N),块查找(索引)的效率介于二者之间.举个例子,对于100万行不同记录的表,顺序查找的平均比较次数为50万次(N/2),而二分查找的为20次(实际略多一些),效率提升极大.二 通...
2018-01-25 17:27:32
178
原创 检查json日志的python脚本
工作中,常有其他部门或者其它公司打过来的json格式的日志需要处理,往往是在解析的过程中发现了问题,比如格式错误,缺少字段等,再让研发去改,改完再检查,一来一回耽误时间也比较被动,所以写了一个python的脚本,可以发给研发进行自检,减少后面的麻烦。json格式检查 第一步是用python解析json串,常有嵌套的json在拼接时不规范的情况,比如多加了双引号,对于这样的问题
2018-01-05 22:23:37
851
原创 mysql不常用函数
# 类似split的函数substring_index('a|b','|',-1) #结果为bsubstring_index('a|b','|',1) #结果为a#加千分位符,同时控制小数位数format(1234567,2)
2018-01-05 21:51:22
405
原创 hive不常用函数
计算天数差函数在计算留存时,常会用到天数差函数datediffselect datediff('2017-08-03','2017-08-02') ; # 结果为1根据日期计算星期几有时会遇到根据日期计算星期几的情况,实现的方法是和某一个的固定的周日的日期做天数差,再对7取余select pmod(datediff(date, '1995-01-01'),
2018-01-05 21:40:30
347
原创 二叉树的还原
通过先序和中序,或者中序和后序的结果,可以还原一颗二叉树。中序为必要的,先序和后序有一个即可。步骤为:(1)确定根结点:先序第一个,或后序最后一个为根结点;(2)确定左右子树:在中序的根节点左边的为左子树序列,右边的为右子树序列;(3)确定左右子树中的孩子结点:其孩子为先序中先出现的,或后序中后出现的;循环(2)(3)即可完成。例:先序为:1,2,4,5
2016-02-24 15:17:37
738
1
原创 堆排序
堆是一种经过排序的完全二叉树。大根堆:双亲结点的值大于等于其孩子结点的值,根结点(堆顶)为最大;小根堆则相反。下面以大根堆为例进行说明。堆排序步骤:(1) 建堆:从最后一个非终端结点开始,依次退到前一个结点直至堆顶。每趟以其为根结点,比较其和左右孩子的大小,若不是最大的,则将最大的孩子与根结点交换,并以被交换的孩子结点的位置作为根结点向下递归。(2) 堆顶换出并调整:将堆顶和当
2016-02-22 14:08:12
378
原创 最小生成树-克鲁斯卡尔方法(Kruskal)-C语言实现
克鲁斯卡尔方法(Kruskal):不断将最小的但不会构成回路的边并入树。示例如下:判断是否构成回路要用到并查集,并查集可快速查找要并入的边与当前的树是否为同一集合(是否在同一棵树中),若为同一集合(在同一棵树中)则会构成回路。并查集的实现方式为:并查集v[a]用来存放a的双亲结点,当a ==v[a]时为根节点,可通过语句"while(a != v[a]) a
2016-02-21 12:56:12
2458
2
原创 最小生成树-普里姆方法(Prim)
生成树:保留一部分的边,使图连通但无回路。普里姆方法(Prim)步骤:(1) 找最小边,及两个顶点为最初的树(2) 与树相接的边中取权值最小的一条边(3) 将边及相应顶点并入树循环(2) (3)可得到最小生成树。示例如下:C代码如下:void Prim(MGraph g,int v, int &sum){ //lowcost记录
2016-02-21 12:38:44
510
原创 拓扑排序
① AOV网:活动在顶点的网(Activity On Vertex network),表示工程间关系的有向图,顶点代表活动,有向边表示活动间的优先关系,要求AOV不能出现回路。检测是否有回路可使用拓扑排序,若最终有点没有被输出,则表明存在回路。② 拓扑排序步骤:(1)选入度为0的点输出;(2)删除该点及出度的边;循环(1)(2)至所有点全部输出示例如下:输出为 6 1 4
2016-02-21 12:05:51
268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人