- 博客(27)
- 资源 (11)
- 收藏
- 关注
转载 spark join
在大数据处理场景中,多表Join是非常常见的一类运算。为了便于求解,通常会将多表join问题转为多个两表连接问题。两表Join的实现算法非常多,一般我们会根据两表的数据特点选取不同的join算法,其中,最常用的两个算法是map-side join和reduce-side join。本文将介绍如何在apache spark中实现这两种算法。(1)Map-side JoinMap-
2016-06-28 10:52:26
1279
转载 spark mapPartition方法与map方法的区别
rdd的mapPartitions是map的一个变种,它们都可进行分区的并行处理。 两者的主要区别是调用的粒度不一样:map的输入变换函数是应用于RDD中每个元素,而mapPartitions的输入函数是应用于每个分区。 假设一个rdd有10个元素,分成3个分区。如果使用map方法,map中的输入函数会被调用10次;而使用mapPartitions方法的话,其输入函数会只会
2016-06-28 10:40:19
9089
翻译 Hive分析窗口函数(五) GROUPING SETS,GROUPING__ID,CUBE,ROLLUP
1.GROUPING SETS与另外哪种方式等价?2.根据GROUP BY的维度的所有组合进行聚合由哪个关键字完成?3.ROLLUP与ROLLUP关系是什么?GROUPING SETS,GROUPING__ID,CUBE,ROLLUP这几个分析函数通常用于OLAP中,不能累加,而且需要根据不同维度上钻和下钻的指标统计,比如,分小时、天、月的UV数。Hive版本为
2016-05-10 15:27:37
1827
翻译 Hive分析窗口函数(四) LAG,LEAD,FIRST_VALUE,LAST_VALUE
1.LAG功能是什么?2.LEAD与LAG功能有什么相似的地方那个?3.FIRST_VALUE与LAST_VALUE分别完成什么功能?继续学习这四个分析函数。注意: 这几个函数不支持WINDOW子句。Hive版本为 apache-hive-0.13.1数据准备:水电费 cookie1,2015-04-10 10:00:02,url2
2016-05-10 15:23:48
7570
1
翻译 Hive分析窗口函数(二) NTILE,ROW_NUMBER,RANK,DENSE_RANK
问题导读:1.NTILE作用是什么?2.按照pv降序排列,生成分组内每天的pv名次可使用哪个窗口函数?3.RANK 和 DENSE_RANK作用是什么?接上篇:Hive分析窗口函数(一)SUM,AVG,MIN,MAX本文中介绍前几个序列函数,NTILE,ROW_NUMBER,RANK,DENSE_RANK,下面会一一解释各自的用途。Hive版本为 apache-hi
2016-05-10 15:18:00
1936
翻译 Hive分析窗口函数(一) SUM,AVG,MIN,MAX
Hive中提供了越来越多的分析函数,用于完成负责的统计分析。抽时间将所有的分析窗口函数理一遍,将陆续发布。今天先看几个基础的,SUM、AVG、MIN、MAX。用于实现分组内所有和连续累积的统计。 CREATE EXTERNAL TABLE yeshuai_test( cookieid string, createtime string, --day pv INT
2016-05-10 15:09:57
3230
转载 Java内存分配和String类型的深度解析
一、引题 在java语言的所有数据类型中,String类型是比较特殊的一种类型,同时也是面试的时候经常被问到的一个知识点,本文结合java内存分配深度分析关于String的许多令人迷惑的问题。下面是本文将要涉及到的一些问题,如果读者对这些问题都了如指掌,则可忽略此文。 1、java内存具体指哪块内存?这块内存区域为什么要进行划分?是如何划分的?划分之后每块区域的作用是什
2016-03-20 21:44:05
392
转载 JVM详细工作机制
gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存。java语言并不要求jvm有gc,也没有规定gc如何工作。不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收集操作。 垃圾收集的目的在于清除不再使用的对象。gc通过确定对象是否被活动对象引用来确定是否收集该对象。gc首先要判断该对象是否是时候可以收集。两种常用的方法是引用计数和对象引用遍
2016-03-20 21:40:07
966
转载 hibernate如何实现延时加载
hibernate如何实现延时加载 延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载,另外在Hibernate3中还提供了对属性的延迟加载。下面我们就分别介绍这些种类的延迟加载的细节。 A、实体对象的延迟加载: 如果想对实体
2016-03-17 10:10:07
953
原创 spring事务系列(4)--声明式事务管理(注解方式)
基于注解的配置方式,写起来是非常方便的,配置文件配置相当简单:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.o
2016-03-17 09:38:31
396
原创 spring事务系列(3)--声明式事务管理(xml方式)
声明式事务管理方式二:基于AspectJ的XML方式上一节说的传统的方式配置,对每一个进行事务的对象进行一个配置,维护管理起来是非常麻烦的spring为了简化aop开发,需要引入AspectJ包和spring整合AspectJ的一个jar包配置文件<beans xmlns="http://www.springframework.org/schema/beans"
2016-03-17 09:12:02
286
原创 spring事务系列(2)--声明式事务管理(传统)
TransactionProxyFactoryBean声明式事务管理上一节说了编程式事务管理,需要手动的更改service层的代码,下面说一下声明式事务的三种方式(事务环境和上一节是一样的,都是转账案例,只需要更改配置文件和测试代码)service也做一下修改,不需要之前那么复杂package com.yeshuai.spring.demo2;public class Acc
2016-03-17 09:10:16
314
原创 spring事务系列(1)--编程式事务管理
对于事务的测试,先大家一个转账的环境创建数据表account 创建数据表account CREATE TABLE `account` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `money` double DEFAULT NULL, PRIMARY KEY (`id`)
2016-03-16 23:06:44
466
原创 反射性能差,提高性能
反射:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制为什么Java反射性能差?java反射是要解析字节码,将内存中的对象进行解析,包括了一些动态类型,所以JVM无法对这些代码进行优化。因此,反射操作的效率要比那些非反射操作低
2016-03-16 15:17:36
1883
转载 Zookeeper 在HBase中充当什么样的角色
HBase部署相对是一个较大的动作,其依赖于zookeeper cluster,hadoop HDFS。 Zookeeper作用在于: 1、hbase regionserver 向zookeeper注册,提供hbase regionserver状态信息(是否在线)。 2、hm
2016-03-16 14:29:25
3098
原创 单例模式就是这么简单!
单例就是这么简单:核心作用:保证只有一个实例,并且提供一个访问该实例的全局访问点。常见应用场景:window的任务管理器和回收站项目的配置文件网站的计数器,一般是采用单例模式,否则难以同步应用程序日志,共享日志文件一直处于单开状态,只有一个实例,才方便添加数据库连接池操作系统文件系统,一个操作系统只有一个文件系统Application(servlet编程中)
2016-03-12 20:03:24
542
翻译 Hive大数据倾斜总结
所谓数据倾斜,说的是由于数据分布不均匀,个别值集中占据大部分数据量,加上Hadoop的计算模式,导致计算资源不均匀引起性能下降。还是拿网站的访问日志说事吧。假设网站访问日志中会记录用户的user_id,并且对于注册用户使用其用户表的user_id,对于非注册用户使用一个user_id=0代表。那么鉴于大多数用户是非注册用户(只看不写),所以user_id=0占据了绝大多数。而如果进行计算的时候
2016-03-10 15:37:50
3682
1
原创 Hive、Hbase、mysql区别
Hive和HBase的区别Hive是为了简化编写MapReduce程序而生的,使用MapReduce做过数据分析的人都知道,很多分析程序除业务逻辑不同外,程序流程基本一样。在这种情况下,就需要Hive这样的用戶编程接口。Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑,就是些表的定义等,也就是表的元数据。使用SQL实现Hive是因为SQL大家都熟悉,
2016-03-10 15:33:02
26956
3
原创 数据结构算法之排序系列Java、C源码实现(9)--总结
类别排序方法平均情况最好情况最坏情况辅助存储稳定性插入排序直接插入0(n2)O(n)0(n2)O(1)稳定希尔排序0(n1.3)O(n)0(n2)O(1)不
2016-02-27 14:36:24
643
原创 数据结构算法之排序系列Java、C源码实现(8)--基数排序
基数排序 这是一种和前述算法完全不同的排序方法。前述算法都要进行关键字的比较,而基数排序不需要进行记录关键字之间的比较。 链式基数排序 思想:从低位到高位一次对待排序的关键码进行分配和收集,经过d趟分配和收集,就可以得到一个有序序列。1.若关键字是十进制整数,则按个、十、百等位进行分解,基数rd=10,C0=0,C9=9,d为最长整数的位数。2.若关键字是小写的英文字,则
2016-02-27 14:32:44
917
原创 数据结构算法之排序系列Java、C源码实现(7)--归并排序
归并排序是将两个或两个以上的有序子表合并成一个新的有序表。初始时,把含有n个结点的待排序序列看做是由n个长度为1的有序表所组成,然后两两归并,得到个长度为2或1的有序子序列;再两两合并,…,如此重复,直至得到一个长度为n的有序序列为止。时间复杂度为O(nlog2n),所需辅助空间为O(n)。 一般情况下,对m个元素进行k路归并时,归并的趟数为:该代码的思想就是最后分治为两个数据的合并(
2016-02-27 14:25:43
623
原创 数据结构算法之排序系列Java、C源码实现(6)--快速排序
快速排序采用一种分治的方法,通常又称为分治法。思想:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些问题,然后将这些子问题的解组合为原问题的解。快速排序就是先找到一个中间轴(一般从起始位置也就是low开始)将 比该值小的数据放左边,比该值大的数据放到右边实现过程,就是low、high 类似于指针的走位,比pivot值大的交换到high处,比pivot值小的放到low
2016-02-27 14:11:53
679
原创 数据结构算法之排序系列Java、C源码实现(5)--冒泡排序
冒泡排序 冒泡排序最好的时间复杂度是O(n)。反之,最坏情况下为O(n2)。 冒泡排序是就地排序,且它是稳定的。第一趟得到的最后位置上的关键字一定是最大的或者最小的。 冒泡排序是一种比较简单的排序java代码:public class BubbleSort {public static void main(String[] args) {int array[]
2016-02-27 14:08:39
642
原创 数据结构算法之排序系列Java、C源码实现(4)--堆排序
堆是一种树形结构,堆排序是对直接选择排序的有效改进。实现堆排序需要解决三个问题:1.构建完全二叉树:先把待排序序列构建成一棵完全二叉树。 2.把无序序列建成的完全二叉树调成一个有序堆。然后根据以下定义建堆: n个元素的序列{k1, k2, …., kn}当且满足下述关系时,称之为堆。 前者称为小顶堆(小根堆),后者称为大顶堆(大根堆)。从一个无序序列建堆的过程就
2016-02-27 14:00:19
561
原创 数据结构算法之排序系列Java、C源码实现(3)--直接选择排序
直接选择排序 首先在所有记录中选出码最小的记录,把它与第1个记录交换,然后在其余的记录内选出排序码最小的记录,与第2个记录交换…依次类推,直到所有记录排好序。直接选择排序的平均时间复杂度O(n2)java代码:public class Straight_Select {public static void main(String[] args) {int array
2016-02-27 13:51:25
542
原创 数据结构算法之排序系列Java、C源码实现(2)--希尔排序
希尔排序 先将整个待排序列分割成为若干个子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对整个记录进行一次直接插入排序,其实希尔排序就是分组直接插入排序。java代码:public class ShellSort {public static void main(String[] args) {int array[] = {2,10,4
2016-02-27 13:23:43
555
原创 数据结构算法之排序系列Java、C源码实现(1)--直接插入排序
使用插入排序,对于具有n个记录的文件,要进行n-1趟排序,是稳定的插入排序。直接插入排序:从未排序的序列中依次取出一个元素与已排序列中的元素进行比较,然后将其放在已排序序列的合适位置上。思想宗旨就是将无序的数据向有序的数据中插入 ,默认选择比较的元素是有序序列的最大值开始比较(高级一点的算法,可以采用二分查找)来选取这个开始比较的元素实际就是有序
2016-02-27 11:05:55
659
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人