hive中行转换成列以及hive相关知识

摘要:
此外,您还可以提供一些提示信息来启发JOIN操作,JOIN操作指定将哪个表用作大型表进行优化。例如:1SELECT/*+STREAMTABLE*/a。val,b.val,c ValFROMaJOINbONJOINcON在上面的JOIN语句中,表a被视为一个大表,然后表b和c将首先进行JOIN,然后结果将与表a进行JOIN。hive优化groupby data skew JOIN data skew multiple job In parallel减少作业python代码#!
Hive语句:
Join应该把大表放到最后
左连接时,左表中出现的JOIN字段都保留,右表没有连接上的都为空。对于带WHERE条件的JOIN语句,例如:
1
SELECT a.val, b.val FROM a LEFT OUTER JOIN b ON (a.key=b.key)
2
WHERE a.ds='2009-07-07' AND b.ds='2009-07-07'
执行顺序是,首先完成2表JOIN,然后再通过WHERE条件进行过滤,这样在JOIN过程中可能会输出大量结果,再对这些结果进行过滤,比较耗时。可以进行优化,将WHERE条件放在ON后,例如:
1
SELECT a.val, b.val FROM a LEFT OUTER JOIN b
2
ON (a.key=b.key AND b.ds='2009-07-07' AND a.ds='2009-07-07')

这个JOIN语句,会生成一个MR Job,在选择JOIN顺序的时候,数据量相比应该是b < c,表a和b基于a.key = b.key1进行连接,得到的结果(基于a和b进行连接的Key)会在Reducer上缓存在buffer中,在与c进行连接时,从buffer中读取Key(a.key=b.key1)来与表c的c.key进行连接。
另外,也可以通过给出一些Hint信息来启发JOIN操作,这指定了将哪个表作为大表,从而得到优化。例如:
1
SELECT /*+ STREAMTABLE(a) */ a.val, b.val, c.val FROM a JOIN b ON (a.key = b.key1) JOIN c ON (c.key = b.key1)
上述JOIN语句中,a表被视为大表,则首先会对表b和c进行JOIN,然后再将得到的结果与表a进行JOIN。

  

hive优化

group by 数据倾斜

join数据倾斜

多个job并行(union all)

减少job个数

python代码

#!/bin/bash
import sys;

if __name__=='__main__':
for line in sys.stdin:
  m=line.strip().split(' ')
  print m[0],' ','huaxue',' ',m[1]
  print m[0],' ','shuxue',' ',m[2]
  print m[0],' ','wuli',' ',m[3]

select transform(name,huaxue,shuxue,wuli) using 'python process.py' as (name,leibie,score) from wxl_t3;

免责声明:文章转载自《hive中行转换成列以及hive相关知识》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java 截取点后面的字符串jps的用法及常见问题介绍下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Hive的web端配置——HWI

1.我们安装Hive的时候的版本为1.2.2,我们要下载1.2.2版本的web端的配置包apache-hive-1.2.2-src.tar.gz,下载地址:http://mirrors.shu.edu.cn/apache/hive/hive-1.2.2/ wget http://mirrors.shu.edu.cn/apache/hive/hive-1.2...

hive QL 插入语法

1.insert 语法格式为:基本的插入语法:INSERT OVERWRITE TABLE tablename [PARTITON(partcol1=val1,partclo2=val2)]select_statement FROM from_statementinsert overwrite table test_insert select * from...

通过hive自定义函数直接回写数据到数据库

hive一般用来执行离线统计分析相关的功能,然后将执行的结果导入到数据库的表中供前端报表可视化展现来查询。 导回数据库的方式有许多,sqoop、hive jdbc、mr jdbc等等,但是这几种方式都会有一个二次处理环节(数据需要人工)。 这次介绍另外一种处理方式,直接将对数据库的操作集成在udf中,这样直接写一个hql查询语句就可以了。 代码如下: pa...

【原创】大数据基础之Benchmark(4)TPC-DS测试结果(hive/hive on spark/spark sql/impala/presto)

1 测试集群 内存:256GCPU:32Core (Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz)Disk(系统盘):300GDisk(数据盘):1.5T*1 2 测试数据 tpcds parquet 10g tpcds orc 10g 3 测试对象 hive-2.3.4 【set mapreduce.map.m...

【转】cloudera新增用户权限配置

转自 http://lookqlp.iteye.com/blog/2189119  。   配置起来较复杂,需要在有测试环境之后再进行配置测试。  之后是有上HUE的计划的,所以这个也是一定要做的。 目标: 给各个业务组提供不同用户及用户组,并有限制的访问hdfs路径,及hive数据库。 前提: cloudera cloudera manager kerb...

大数据自学3-Windows客户端DbVisualizer/SQuirreL配置连接hive

前面已经学习了将数据从Sql Server导入到Hive DB,并在Hue的Web界面可以查询,接下来是配置客户端工具直接连Hive数据库,常用的有DbVisualizer、SQuirreL SQL Client、DataGrip,只试用了前面两种,花了1天多时间最终实现了用这两款工具连Hive,还是挺有成就感的。 先把环境说明下,有些问题跟环境版本是非常...