简单,可复制

点点滴滴,尽在文中

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2013年1月3日

摘要: 翻译自https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types列类型Hive支持的数据类型如下:原生类型:TINYINTSMALLINTINTBIGINTBOOLEANFLOATDOUBLESTRINGBINARY(Hive0.8.0以上才可用)TIMESTAMP(Hive0.8.0以上才可用)复合类型:arrays:ARRAY<data_type>maps:MAP<primitive_type, data_type>structs:STRUCT<col_name : data_ty 阅读全文
posted @ 2013-01-03 22:42 ggjucheng 阅读(24140) 评论(0) 推荐(2)

摘要: 参考https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AlterTable%2FPartitionStatements这里主要列一些常用操作。添加分区ALTER TABLE table_name ADD PARTITION (partCol = 'value1') location 'loc1'; //示例ALTER TABLE table_name ADD IF NOT EXISTS PARTITION (dt='20130101& 阅读全文
posted @ 2013-01-03 21:45 ggjucheng 阅读(118178) 评论(0) 推荐(2)

摘要: hive文件存储格式包括以下几类:TEXTFILESEQUENCEFILERCFILE自定义格式其中TEXTFILE为默认格式,建表时不指定默认为这个格式,导入数据时会直接把数据文件拷贝到hdfs上不进行处理。SequenceFile,RCFile格式的表不能直接从本地文件导入数据,数据要先导入到textfile格式的表中,然后再从textfile表中用insert导入到SequenceFile,RCFile表中。TEXTFIEL默认格式,数据不做压缩,磁盘开销大,数据解析开销大。可结合Gzip、Bzip2使用(系统自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,从 阅读全文
posted @ 2013-01-03 20:29 ggjucheng 阅读(17301) 评论(1) 推荐(4)

摘要: Hadoop MapReduce程序中,reducer个数的设定极大影响执行效率,这使得Hive怎样决定reducer个数成为一个关键问题。遗憾的是Hive的估计机制很弱,不指定reducer个数的情况下,Hive会猜测确定一个reducer个数,基于以下两个设定:1. hive.exec.reducers.bytes.per.reducer(默认为1000^3)2. hive.exec.reducers.max(默认为999)计算reducer数的公式很简单:N=min(参数2,总输入数据量/参数1)通常情况下,有必要手动指定reducer个数。考虑到map阶段的输出数据量通常会比输入有大幅 阅读全文
posted @ 2013-01-03 19:20 ggjucheng 阅读(3646) 评论(0) 推荐(0)

摘要: order byorder by 会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序)只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。set hive.mapred.mode=nonstrict; (default value / 默认值)set hive.mapred.mode=strict;order by 和数据库中的Order by 功能一致,按照某一项 & 几项 排序输出。与数据库中 order by 的区别在于在hive.mapred.mode = strict 模式下 必须指定 limit 否则执行会报错。hive> 阅读全文
posted @ 2013-01-03 19:15 ggjucheng 阅读(25695) 评论(0) 推荐(2)

摘要: hive.exec.parallel参数控制在同一个sql中的不同的job是否可以同时运行,默认为false.下面是对于该参数的测试过程:测试sql:select r1.afrom ( select t.a from sunwg_10 t join sunwg_10000000 s on t.a=s.b) r1 join (select s.b from sunwg_100000 t join sunwg_10 s on t.a=s.b) r2 on (r1.a=r2.b);1当参数为false的时候,三个job是顺序的执行 set hive.exec.parallel=... 阅读全文
posted @ 2013-01-03 18:59 ggjucheng 阅读(8942) 评论(0) 推荐(0)

摘要: 在hive0.7的版本中增加了local hadoop的功能,就是在处理数据量比较小的情况在本地执行,而不走分布的mapred。这样一来,那些比较小的任务的执行速度就会大大提高。那到底什么样的任务会采用local hadoop呢,是由hive的一个参数控制的。hive.exec.mode.local.auto.inputbytes.max当处理的数据量比这个参数值小的情况下就会采用local hadoop的方式来执行。如果想要屏蔽掉local hadoop的功能,只需要把这个参数设置为-1即可。<property> <name>hive.exec.mode.local. 阅读全文
posted @ 2013-01-03 18:45 ggjucheng 阅读(1884) 评论(0) 推荐(0)

摘要: Is the cluster set up correctly? The best way to answer this question is empirically: run some jobs and confirm that you get the expected results. Benchmarks make good tests, as you also get numbers that you can compare with other clusters as a sanity check on whether your new cluster is performing 阅读全文
posted @ 2013-01-03 15:48 ggjucheng 阅读(1920) 评论(0) 推荐(0)

摘要: 背景 分布式的集群通常包含非常多的机器,由于受到机架槽位和交换机网口的限制,通常大型的分布式集群都会跨好几个机架,由多个机架上的机器共同组成一个分布式集群。机架内的机器之间的网络速度通常都会高于跨机架机器之间的网络速度,并且机架之间机器的网络通信通常受到上层交换机间网络带宽的限制。 具体到Hadoop集群,由于hadoop的HDFS对数据文件的分布式存放是按照分块block存储,每个block会有多个副本(默认为3),并且为了数据的安全和高效,所以hadoop默认对3个副本的存放策略为:第一个block副本放在和client所在的node里(如果client不在集群范围内,则这第一个nod.. 阅读全文
posted @ 2013-01-03 15:26 ggjucheng 阅读(21407) 评论(2) 推荐(3)

摘要: 通过dfs.umask可以控制在hdfs上创建的文件夹和文件的属性,该值的默认值为0022。在hadoop中通过dfs.umask参数可以控制默认的文件的权限。dfs.umask的设置<property> <name>dfs.umask</name> <value>0002</value></property>这个参数和linux中的umask不大一样。比如我想让文件的属性为-rw-r–r–,那么在linux中应该设置umask为022,而设置dfs.mask的值为0022的时候,结果并不是我希望的。后来发现在dfs.um 阅读全文
posted @ 2013-01-03 14:52 ggjucheng 阅读(3924) 评论(0) 推荐(0)

摘要: 最近要对hdfs上空间使用和文件结点使用增加报警,当超过一定的限额的时候就要发报警好通知提前准备。[sunwg]$ hadoop fs -count /sunwg 2 1 108 hdfs://sunwg:9000/sunwg第一个数值2表示/sunwg下的文件夹的个数,第二个数值1表是当前文件夹下文件的个数,第三个数值108表示该文件夹下文件所占的空间大小,这个大小是不计算副本的个数的[sunwg]$ hadoop fs -count -q /sunwg 1024 1021 10240 10132 2 1 108 ... 阅读全文
posted @ 2013-01-03 14:46 ggjucheng 阅读(20593) 评论(0) 推荐(0)

摘要: Lateral View语法lateralView: LATERAL VIEW udtf(expression) tableAlias AS columnAlias (',' columnAlias)*fromClause: FROM baseTable (lateralView)*描述lateral view用于和split, explode等UDTF一起使用,它能够将一行数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。lateral view首先为原始表的每行调用UDTF,UTDF会把一行拆分成一或者多行,lateral view再把结果组合,产生一个支持别名表的虚 阅读全文
posted @ 2013-01-03 14:39 ggjucheng 阅读(8742) 评论(0) 推荐(2)

摘要: 在做Shuffle阶段的优化过程中,遇到了数据倾斜的问题,造成了对一些情况下优化效果不明显。主要是因为在Job完成后的所得到的Counters是整个Job的总和,优化是基于这些Counters得出的平均值,而由于数据倾斜的原因造成map处理数据量的差异过大,使得这些平均值能代表的价值降低。Hive的执行是分阶段的,map处理数据量的差异取决于上一个stage的reduce输出,所以如何将数据均匀的分配到各个reduce中,就是解决数据倾斜的根本所在。规避错误来更好的运行比解决错误更高效。在查看了一些资料后,总结如下。1数据倾斜的原因1.1操作:关键词情形后果Join其中一个表较小,但是key集 阅读全文
posted @ 2013-01-03 13:12 ggjucheng 阅读(57752) 评论(3) 推荐(4)

摘要: 目前hive不支持 in或not in 中包含查询子句的语法,所以只能通过leftjoin实现。假设有一个登陆表login(当天登陆记录,只有一个uid),和一个用户注册表regusers(当天注册用户,字段只有一个uid),这两个表都包含一个字段,uid。in查询如果要查询当天登陆的注册用户,需要用in查询,hive sql如下:select login.uid from login left outer join regusers on login.uid=regusers.uid where regusers.uid is not null如果login表和regusers表按天分区,字 阅读全文
posted @ 2013-01-03 13:05 ggjucheng 阅读(51127) 评论(1) 推荐(0)

摘要: 表或者字段有中文的时候需要修改hive的元数据库的设置。以mysql为例子,当mysql的字符集设置成utf8的时候使用hive会有问题,详细见hive的wiki。所以当hive使用mysql作为元数据库的时候mysql的字符集要设置成latin1。为了保存那些utf8的中文,要将mysql中存储注释的那几个字段的字符集单独修改为utf8。修改字段注释字符集alter table COLUMNS modify column COMMENT varchar(256) character set utf8;修改表注释字符集alter table TABL_PARAMS modify column 阅读全文
posted @ 2013-01-03 12:23 ggjucheng 阅读(10639) 评论(2) 推荐(0)

摘要: CommonJoin最为普通的join策略,不受数据量的大小影响,也可以叫做reduce side join ,最没效率的一种join方式. 它由一个mapreduce job 完成.首先将大表和小表分别进行map 操作, 在map shuffle 的阶段每一个mapoutput key 变成了table_name_tag_prefix + join_column_value , 但是在进行partition 的时候它仍然只使用join_column_value 进行hash.每一个reduce 接受所有的map 传过来的split , 在reducce 的shuffle 阶段,它将mapou 阅读全文
posted @ 2013-01-03 12:20 ggjucheng 阅读(12512) 评论(0) 推荐(0)

摘要: 原文出自http://www.cnblogs.com/ggjucheng/archive/2012/12/17/2821935.html英文出自http://docs.oracle.com/javase/tutorial/java/package/summary-package.html包该章节解说如何捆绑类和接口到包里,如何使用包里的类,如何在文件系统分类,让编译器找到你的源代码。创建和使用包为了让类型更容易查找和使用,避免命名冲突,访问控制,程序员要把相关的类型的组捆绑为包。声明:包是相关的类型的组,提供访问控制,命名空间管理。注意类型是类,接口,枚举和注解。枚举和注解类型是特殊的类和接口 阅读全文
posted @ 2013-01-03 00:55 ggjucheng 阅读(3312) 评论(0) 推荐(0)