随笔分类 - Hive
摘要:map/reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其他key多很多(有时是百倍或者千倍之多),这条key所在的reduce节点所处理的数据量比其他节点就大很多,从而导致某几个节点迟迟运行...
阅读全文
摘要:1.jvm重用:详见Hadoop性能调优2.并行执行即同时执行hive的多个阶段。hive在执行过程,将一个查询转化成一个或者多个阶段,而这些阶段可能并非完全相互依赖的,也就是说可以并行执行的,这样可能使得整个job的执行时间缩短hive执行开启:set hive.exec.parallel=tru...
阅读全文
摘要:1.入口$HIVE_HOME/bin/ext/cli.sh 调用org.apache.hadoop.hive.cli.CliDriver类进行初始化过程 处理-e,-f,-h等信息,如果是-h,打印提示信息,并退出 读取hive的配置文件和$HIVE_HOME/bin/.hiverc文件,设置Hiv...
阅读全文
摘要:hive.exec.script.maxerrsize:一个map/reduce任务允许打印到标准错误里的最大字节数,为了防止脚本把分区日志填满,默认是100000;hive.exec.script.allow.partial.consumption:hive是否允许脚本不从标准输入中读取任何内容就...
阅读全文
摘要:1).Hive中Select Top N的实现Hive中使用 Order by + Limit 可以很容易地实现Select Top N。但是在Hive中Order by只能使用1个Reduce,如果表的数据量很大,那么Order by就会力不从心。相对的,Sort by可以启动多个Reduce,每...
阅读全文
摘要:1.HQL是否区分大小写 不区分hive> select AGE from default.studeNT; --不区分大小写,即使是表中字段2.查看创建表过程 show create tablehive> show create table default.student; --查看创建表过...
阅读全文
摘要:TextFileHive数据表的默认格式,存储方式:行存储。可使用Gzip,Bzip2等压缩算法压缩,压缩后的文件不支持split但在反序列化过程中,必须逐个字符判断是不是分隔符和行结束符,因此反序列化开销会比SequenceFile高几十倍。--创建数据表:create table if not ...
阅读全文
摘要:对于Table或者Partition,Hive可以进一步组织成桶,也就是说桶Bucket是更为细粒度的数据范围划分。Bucket是对指定列进行hash,然后根据hash值除以桶的个数进行求余,决定该条记录存放在哪个桶中。优点①:获得更高的查询处理效率。桶为表加上了额外的结构,Hive在处理有些查询时...
阅读全文
摘要:Hive中的视图是只读的,所以无法通过视图向基表(basetable)加载或插入数据。视图的SELECT语句只在执行引用视图的语句时才执行。对于上节用于查询每年各个气象站气温最大值的均值的HQL语句,可以先创建一个记录有效记录(即有特定quality值)的视图:CREATE VIEW valid_r...
阅读全文
摘要:Hive的Explain命令,用于显示SQL查询的执行计划。Hive查询被转化成序列阶段(这是一个有向无环图)。这些阶段可能是mapper/reducer阶段,或者是Metastore或文件系统的操作,如移动和重命名的阶段。例子hive> explain [extended] --加上关键字exte...
阅读全文
摘要:Select a.val,b.val From a [Left|Right|Full Outer] Join b On (a.key==b.key);现有两张表:sales列出了人名及其所购商品的ID;things列出商品的ID和名称:hive> select * from sales;OKJoe ...
阅读全文
摘要:在hive查询中有【两种】情况是不执行MR的。1). Limit关键字限制查询的记录数,结果是随机的。下面的查询语句从Student 表中随机查询5条记录:hive> select * from student limit 5;2). 基于分区的查询。【其中,date是分区字段】hive> sele...
阅读全文
摘要:1.导入数据除了前面使用LoadData方式把文件复制或移动到表的目录外,还有以下几种方式:1).Insert Overwrite / Into Tablehive> insert overwrite table school > select age,name from stude...
阅读全文
摘要:1.查看创建表的信息 【show create table】hive> show create table student;OKcreatetab_stmtCREATE TABLE `student`( `age` int, `name` string)ROW FORMAT DELIMITE...
阅读全文
摘要://五种子句是有严格顺序的:where → group by → having → order by → limit//where和having的区别://where是先过滤再分组(对原始数据过滤),where限定聚合函数hive> select count(*),age from tea wher...
阅读全文
摘要:1.分区表分区实质:在数据表文件夹下再次创建分区文件夹 分区在创建表时用Partitioned By定义,创建表后可以使用Alter Table语句来增加或移除分区。create table logs (ts bigint,line string) partitioned by (dt strin...
阅读全文
摘要:1.内部表内部表Load数据有两种方式:① Load data ***;②hdfs dfs -put ****。这是因为在Metastore文件,即mysql的hive数据库的“SDS”表中,保存着Hive表对应的hdfs路径信息。内部表在Load数据时,如果使用LOCAL关键字,Hive会把本地文...
阅读全文
摘要:1.hive常用的数据类型包括:2.类型转换 隐式转换规则:任何整数类型都可以隐式转换为一个范围更广的类型。所有整数类型+float+String都可以转换为Double类型。 可以使用cast操作进行数据类型显示转换。例如cast('1'asint)把字符串'1'转换成整数值1,转换失败则表达...
阅读全文
摘要:1.Hive非交互模式常用命令: 1)hive-e:从命令行执行指定的HQL,不需要分号:% hive -e 'select * from dummy' > a.txt 2)hive–f:执行HQL脚本% hive -f /home/my/hive-script.sql --hive-scri...
阅读全文
摘要:Hive组织数据包含四种层次:DataBase -->Table -->Partition -->Bucket,对应在HDFS上都是文件夹形式。数据库和数据仓库的区别:1). 数据库内数据是动态变化的,而数据仓库内数据是静态的,是用来存储数据的(一次写入多次读取)2). 数据库中的数据结构比较复杂,...
阅读全文

浙公网安备 33010602011771号