- 博客(41)
- 资源 (29)
- 收藏
- 关注
转载 Hive 随谈(五)– Hive 优化
Hive 针对不同的查询进行了优化,优化可以通过配置进行控制,本文将介绍部分优化的策略以及优化控制选项。列裁剪(Column Pruning)在读数据的时候,只读取查询中需要用到的列,而忽略其他列。例如,对于查询:SELECT a,b FROM T WHERE e < 10;其中,T 包含 5 个列 (a,b,c,d,e),列 c,d 将会被忽略,只会读取a, b,
2014-02-25 23:00:40 890
转载 Hive优化
hive.optimize.cp=true:列裁剪hive.optimize.prunner:分区裁剪hive.limit.optimize.enable=true:优化LIMIT n语句hive.limit.row.max.size=1000000:hive.limit.optimize.limit.file=10:最大文件数1. 本地模式(小任务):需要满足以下条件
2014-02-25 13:38:04 1016
转载 map和reduce 个数的设定 (Hive优化)经典
一、 控制hive任务中的map数: 1. 通常情况下,作业会通过input的目录产生一个或者多个map任务。 主要的决定因素有: input的文件总个数,input的文件大小,集群设置的文件块大小(目前为128M, 可在hive中通过set dfs.block.size;命令查看到,该参数不能自定义修改);2. 举例: a) 假设input目录下有
2014-02-25 09:37:40 1833 1
转载 Hive中的mapjoin
1: 有一个极小的表2: 需要做不等值join操作(a.x 这种操作如果直接使用join的话语法不支持不等于操作,hive语法解析会直接抛出错误如果把不等于写到where里会造成笛卡尔积,数据异常增大,速度会很慢。甚至会任务无法跑成功~根据mapjoin的计算原理,MAPJION会把小表全部读入内存中,在map阶段直接拿另外一个表的数据和内存中表数据做匹配。这种情况
2014-02-24 16:35:41 1518
原创 空格替换
文本文件f中空格替换为,a空格空格空格b 替换成a,b1,cat f|tr -s ' '|tr ' ' ','2,vi f :%s/[ ]\{1,\}/,/g3,cat f | tr -s " " | sed 's/ /,/g' >outfile
2014-02-24 11:31:51 664
转载 Hive与表操作有关的语句
1.创建表的语句:Create [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment],
2014-02-24 11:07:32 754
原创 hive中使用自定义函数(UDF)实现分析函数row_number的功能
1. hive0.10及之前的版本没有row_number这个函数,假设我们现在出现如下业务场景,现在我们在hdfs上有个log日志文件,为了方便叙述,该文件只有2个字段,第一个是用户的id,第二个是当天登录的timestamp,现在我们需要求每个用户最早登录的那条记录(注意不是仅仅只要那个登录的timestamp),可以方便计算NewUser。2. 我们的数据是这样的:1,322,463,3...
2014-02-24 10:39:12 1507
原创 算法-求二进制数中1的个数
问题描述任意给定一个32位无符号整数n,求n的二进制表示中1的个数,比如n = 5(0101)时,返回2,n = 15(1111)时,返回4这也是一道比较经典的题目了,相信不少人面试的时候可能遇到过这道题吧,下面介绍了几种方法来实现这道题,相信很多人可能见过下面的算法,但我相信很少有人见到本文中所有的算法。如果您上头上有更好的算法,或者本文没有提到的算法,请不要吝惜您的代码,分享的时候,也
2014-02-24 09:23:39 1157
转载 hive中生成从1到n的连续数字的UDTF方法
之前在博客中分享了个生成从1到n的连续数字的transform或map方法,最近研究了一下UDTF,发现用UDTF写出来的函数用起来更方便,语法更接近于普通的函数。而且在JAVA中对参数的个数、类型等进行校验也更容易。 ORACLE中生成从1到n的连续数字的方法很多,最简单的一种是:select level from dual connect by level
2014-02-23 22:31:06 9413
原创 hive参数hive.mapred.mode分析
Hive配置中有个参数hive.mapred.mode,分为nonstrict,strict,默认是nonstrict如果设置为strict,会对三种情况的语句在compile环节做过滤:1. 笛卡尔积Join。这种情况由于没有指定reduce join key,所以只会启用一个reducer,数据量大时会造成性能瓶颈[java] view plainc
2014-02-23 21:05:06 1246
转载 hive 配置参数说明
hive.exec.mode.local.auto 决定 Hive 是否应该自动地根据输入文件大小,在本地运行(在GateWay运行) 默认值:true hive.exec.mode.local.auto.inputbytes.max 如果 hive.exec.mode.local.auto 为 true,当输入文件大小小于此阈值时可以
2014-02-23 20:41:01 3244
原创 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
法1:如果要知道一个字符是否只出现过一次,必须遍历一次字符串知道所有字符出现过的情况。在遍历中要用数组统计每个字符的出现次数,到最后将,再遍历一遍数组,得到出现次数为1的第一个字符,取出。空间复杂度:O(1)时间复杂度:O(n) 我们创建一个长度为256的数组,每个字母根据其ASCII码值作为数组的下标对应数组的对应项,而数组中存储的是每个字符对应的次数
2014-02-23 17:01:06 1480
原创 单链表的遍历和逆转
public class Test {public static void main(String[] args) {LNode linklist = new LNode("a");LNode b = new LNode("b");LNode c = new LNode("c");LNode d = new LNode("d");LNode e = new
2014-02-23 15:22:29 988
转载 经典面试题:链表的相交与环问题
1、 给出两个单向链表的头指针pHead1和pHead2,判断这两个链表是否相交。假设两个链表均不带环。 示意图如下:如果两个链表相交于某一节点,那么在这个相交节点之后的所有节点都是两个链表所共有的。也就是说,如果两个链表相交,那么最后一个节点肯定是共有的。先遍历第一个链表,记住最后一个节点,然后遍历第二个链表,到最后一个节点时和第一个链表的最后一个节点做比较,如果相同,则相交,否则不
2014-02-23 14:44:52 926
原创 求子数组的最大和
题目:求子数组的最大和 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为 O(n) 。 例如输入的数组为 1, -2, 3, 10, -4, 7, 2, -5 ,和最大的子数组为 3, 10, -4, 7, 2 ,因此输出为该子数组的和18 。
2014-02-23 14:02:43 707
转载 hive join
hive(0.9.0):1.支持equality joins, outer joins, and left semi joins2.只支持等值条件3.支持多表join原理hive执行引擎会将HQL“翻译”成为map-reduce任务,如果多张表使用同一列做join则将被翻译成一个reduce,否则将被翻译成多个map-reduce任务。eg:SELECT a.val
2014-02-22 22:29:07 823
转载 Java虚拟机(JVM)中的内存设置详解
在一些规模稍大的应用中,Java虚拟机(JVM)的内存设置尤为重要,想在项目中取得好的效率,GC(垃圾回收)的设置是第一步。PermGen space:全称是Permanent Generation space.就是说是永久保存的区域,用于存放Class和Meta信息,Class在被Load的时候被放入该区域Heap space:存放Instance。GC(Garbage Coll
2014-02-21 09:26:05 1012
转载 浅谈设置JVM内存分配的几个妙招
一、设置JVM内存设置1. 设置JVM内存的参数有四个:-Xmx Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;-Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;-Xmn Java Heap Young区大小,不熟悉
2014-02-21 09:25:34 960
转载 Java线程学习和总结
线程是Java的一大特色,从语言上直接支持线程,线程对于进程来讲的优势在于创建的代价很小,上下文切换迅速,当然其他的优势还有很多,缺点也是有的,比如说对于开发人员来讲要求比较高,不容易操作,但是Java的线程的操作已经简化了很多,是一个比较成熟的模型。很多时候,我们都用不到线程,但是当我们有一天不走运(或者走运)的时候,我们必须要面对这个问题的时候,应该怎么办呢?本文是我的学习笔记和一些总结,试图
2014-02-20 17:06:37 1444
转载 Java Thread 总结
Ø线程的概述(Introduction)线程是一个程序的多个执行路径,执行调度的单位,依托于进程存在。 线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间也叫做线程栈,是在建立线程时由系统分配的,主要用来保存线程内部所使用的数据,如线程执行函数中所定义的变量。注意:Java中的多线程是一种抢占机制而不是分时机制。抢占机制指的是有多个线程处于可运行状态,但是只允许
2014-02-20 17:04:03 782
转载 Java Object类中的方法
面试问的最多的问题是:“Java object类中有哪些方法?归类总结一下”。一般情况下,3年以上工作经验的回答少于6个方法的,会导致减分,2年以下工作经验的知道6个以上会加分。到阿里云后面试过30+,回答让我满意的人很少。 作为一个半路出家当程序员,开始我总是痴迷于应用。a框架的配置,b框架的模板,c框架的控制……其实我对Java底层了解的很少,也没有想过了解java的底层。
2014-02-20 16:06:11 967
转载 关于重写equals,hashcode以及compareTo方法
1.Object的equals()方法比较的是地址值2.String 、Math、还有Integer、Double。。。。等这些封装类重写了Object中的equals()方法,让它不再比较句柄(引用),而是比较对象中实际包含的整数的值,即比较的是内容。 一般来说,如果你要把一个类的对象放入容器中,那么通常要为其重写equals()方法,让他们比较地址值而不是内容值。特别地,
2014-02-20 15:57:24 905
转载 Try、finally语句块内 有 return 的注意问题
情况一:(最普通用法)public class Test { public static void main(String[] args) { System.out.print(tt()); } public static int t
2014-02-19 21:34:35 1302 1
转载 awk 数组排序多种实现方法
由于awk数组,是关联数组。for…in循环输出时候,默认打印出来是无序数组。 [chengmo@localhost ~]$ awk 'BEGIN{info = "this is a test";split(info,tA," ");for(k in tA){print k,tA[k];}}'4 test1 this2 is3 a 如果需要按照顺
2014-02-19 19:02:58 872
转载 awk 之 asort 与 asorti 数组排序区别及演示
两者排序区别:asort 是对数组的值进行排序,并且会丢掉原先键值;asorti是对数组的下标进行排序。数据文件:12 3478 9023 451. awk是关联数组。for…in循环输出时候,默认打印出来是无序数组。[root@zhenjiang ~]# awk '{a[$1]=$2}END{for(i in a
2014-02-19 18:24:56 1407
转载 Hive与表操作有关的语句
1.创建表的语句:Create [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment],
2014-02-18 21:17:05 842
转载 MapReduce: 提高MapReduce性能的七点建议[译]
Cloudera提供给客户的服务内容之一就是调整和优化MapReduce job执行性能。MapReduce和HDFS组成一个复杂的分布式系统,并且它们运行着各式各样用户的代码,这样导致没有一个快速有效的规则来实现优化代码性能的目的。在我看来,调整cluster或job的运行更像一个医生对待病人一样,找出关键的“症状”,对于不同的症状有不同的诊断和处理方式。 在医学领域,没
2014-02-18 15:09:57 1383
转载 Hashtable与ConcurrentHashMap区别
相同点: Hashtable 和 ConcurrentHashMap都是线程安全的,可以在多线程环境中运行; key跟value都不能是null区别: 两者主要是性能上的差异,Hashtable的所有操作都会锁住整个对象,虽然能够保证线程安全,但是性能较差; ConcurrentHashMap内部使用Segment数组,每个Segment类似于Hashtable,在“写”线程或者部分特殊的
2014-02-17 15:43:19 42711 5
原创 Java方法调用的绑定
java编程思想第4版 P151 将一个方法调用同一个方法主体连接到一起就称为“绑定”(Binding)。若在程序运行以前执行绑定(由编译器和链接程序,假如有的话),就叫作“早期绑定”。大家以前或许从未听说过这个术语,因为它在任何程序化语言里都是不可能的。C编译器只有一种方法调用,那就是“早期绑定”。 上述程序最令人迷惑不解的地方全与早期绑定有关,因为在只有一个Instrume
2014-02-17 10:06:57 842
转载 转mysql横向扩展和纵向扩展
Scale-up(纵向扩展)和Scale-out(横向扩展)的解释 谈到系统的可伸缩性,Scale-up(纵向扩展)和Scale-out(横向扩展)是两个常见的术语,对于初学者来说,很容易搞迷糊这两个概念,这里总结了一些把概念解释的比较清楚的内容。 首先来段Wikipedia的,讲的很透彻了。Scale vertically (scale up) To sc
2014-02-11 10:24:57 4997 3
转载 父 shell,子 shell ,export 与 变量传递
当我们在一个 shell 里运行一个脚本程序时,该 shell 就会 fork 出一个新进程,从而启动了另一个命令解释器(由脚本中第一行的 #!/bin/xxx 指定,如 bash shell)来解释运行我们这个脚本。也就是说,这个新进程是一个子 shell,而之前的 shell 是个父 shell 。在我们所运行的脚本里,我们还可以启动新的子 shell 进程,这些子 shell 进
2014-02-10 15:50:02 3537
转载 SHELL下date命令的用法
date命令如何获得上星期的日期?#date -d “-1 week” “+%Y%m%d %A”举一反三:date命令获得前天,昨天,明天,后天,上个月,下个月的日期date -d “-2 day” “+%Y%m%d %A” 或 date –date=”2 days ago” “+%Y%m%d %A”date -d “-1 day” “+%Y%m%d %A” 或 d
2014-02-08 10:33:43 1047
转载 shell字符串的截取
shell字符串的截取的问题:一、Linux shell 截取字符变量的前8位,有方法如下: 1.expr substr “$a” 1 8 2.echo $a|awk ‘{print substr(,1,8)}’ 3.echo $a|cut -c1-8 4.expr $a : ‘\(.\\).*’ 5.echo $a|dd bs=1 cou
2014-02-08 10:23:56 1067
转载 Linux dirname、basename 指令
一、dirname指令1、功能:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分)2、用法:dirname filename例如下面几个例子(1)# dirname /etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts(2)# dirname /
2014-02-08 10:14:36 1033
原创 Hadoop源码解析之: TextInputFormat如何处理跨split的行
Hadoop源码解析之: TextInputFormat如何处理跨split的行
2014-02-07 14:53:43 1039
rpmbuild-demo工程
2015-01-21
Weka源代码详细分析系列
2012-05-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人