简单,可复制

点点滴滴,尽在文中

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

随笔分类 -  hadoop

上一页 1 2 3 4 5 6 下一页

记一下hadoop那点事儿
摘要:Join语法hive表连接支持的语法如下:join_table: table_reference JOIN table_factor [join_condition] | table_reference {LEFT|RIGHT|FULL} [OUTER] JOIN table_reference join_condition | table_reference LEFT SEMI JOIN table_reference join_condition | table_reference CROSS JOIN table_reference [join_condition] (as ... 阅读全文
posted @ 2013-01-15 17:03 ggjucheng 阅读(13682) 评论(1) 推荐(1) 编辑

摘要:Group By 语法groupByClause: GROUP BY groupByExpression (, groupByExpression)*groupByExpression: expressiongroupByQuery: SELECT expression (, expression)* FROM src groupByClause?简单例子为了计算表的行数: SELECT COUNT(*) FROM table2;根据性别,计算去重用户数,可以写下面的查询 INSERT OVERWRITE TABLE pv_gender_sum SELECT pv_users.gende... 阅读全文
posted @ 2013-01-09 22:56 ggjucheng 阅读(31962) 评论(0) 推荐(1) 编辑

摘要:Select语法SELECT [ALL | DISTINCT] select_expr, select_expr, ...FROM table_reference[WHERE where_condition][GROUP BY col_list][CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY col_list]][LIMIT number]select语句可以是union查询的一部分或者是另一个查询的子查询。table_reference指示查询的输入。它可以是普通的表,视图,join构造或者是子查询。简单查询。例如,下面的查. 阅读全文
posted @ 2013-01-08 15:02 ggjucheng 阅读(21356) 评论(1) 推荐(2) 编辑

摘要:记录下工作中,使用hive sql遇到的问题,和大家共享。某个字段条件过多,查询条件失效select * from login where dt='20130101' and (ver !='3.1' or ver !='3.2' or ver != '4.0' or ver != '5.2');备注:感谢杨庆荣的指导,这里笔误,其实修改为如下的sql,功能可以实现,该bug纯属作者的错误:select * from login where dt='20130101' and (ver !=' 阅读全文
posted @ 2013-01-08 11:34 ggjucheng 阅读(11916) 评论(9) 推荐(1) 编辑

摘要:这里罗列常用操作,更多参考https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Clihive命令行执行一个查询$HIVE_HOME/bin/hive -e 'select a.col from tab1 a'之后过程中,会在终端上显示mapreduce的进度,执行完毕后,最后把查询结果输出到终端上,接着hive进程退出,不会进入交互模式。使用静音模式执行一个查询$HIVE_HOME/bin/hive -S -e 'select a.col from tab1 a'加入-S,终端上的输出不 阅读全文
posted @ 2013-01-04 22:42 ggjucheng 阅读(9950) 评论(2) 推荐(1) 编辑

摘要:hive有两种数据修改方式从文件加载到hive表加载数据到表时,hive不会做任何转换。加载操作是纯粹的复制/移动操作,移动数据文件到相应的hive表。语法LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]实例假设hive的warehouse目录是/user/hadoop/warehouse,这里有一个login表CREATE TABLE login ( uid BIGINT, ip STRING)P 阅读全文
posted @ 2013-01-04 20:19 ggjucheng 阅读(24648) 评论(1) 推荐(2) 编辑

摘要:这里罗列常用操作,更多参考https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Create%2FDrop%2FTruncateTable简单的创建表create table table_name ( id int, dtDontQuery string, name string)创建有分区的表create table table_name ( id int, dtDon... 阅读全文
posted @ 2013-01-04 16:01 ggjucheng 阅读(79227) 评论(0) 推荐(1) 编辑

摘要:翻译自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 阅读(24074) 评论(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 阅读(117874) 评论(0) 推荐(2) 编辑

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

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

上一页 1 2 3 4 5 6 下一页