hive的hive partition by是针对谁而言的

Hive中关于partition的操作_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Hive中关于partition的操作
上传于||文档简介
&&介​绍​H​i​v​e​ ​Q​L​语​言​中​p​a​r​t​i​t​i​o​n​相​关​的​操​作​,​通​过​简​单​的​例​子​帮​助​你​理​解​p​a​r​t​i​t​i​o​n
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
你可能喜欢<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&当前访客身份:游客 [
这个人很懒,啥也没写
:mark 一个。。。。。。。吼吼。。。
:不错,谢谢!
:大神啊,只能膜拜啊
今日访问:11
昨日访问:13
本周访问:24
本月访问:310
所有访问:5138
Hive动态分区&Partition中跟函数
发表于2年前( 17:47)&&
阅读(4720)&|&评论()
0人收藏此文章,
Hive动态分区
一、前段时间因为导表需求(从一张表中查找出数据,按日期分区overwrite 到指定分区表中),在Hive里面研究了一下自动分区。
& & & & &1、建好所需分区表
& & & & &2、设置分区参数
set&hive.exec.dynamic.partition=(可通过这个语句查看:set&hive.exec.dynamic.)&
set&hive.exec.dynamic.partition.mode=&
SET&hive.exec.max.dynamic.partitions=100000;(如果自动分区数大于这个参数,将会报错)
SET&hive.exec.max.dynamic.partitions.pernode=100000;
&&&&&&&&&3、书写代码(特别注意:日期字段一定要放在末尾),例如:
INSERT&OVERWRITE&TABLE&dw_stage.ds_info_msg&partition(cal_dt)
select&id&&&&&&&&
&&&&&&&,...
&&&&&&&,pv
&&&&&&&,0&&uv
&&&&&&&,cal_dt
from&&&dw_stage.tiny_info_msg
二、如果要在partition字段用函数处理也可通过通过这种方式实现;例如:
set&hive.exec.dynamic.partition=
set&hive.exec.dynamic.partition.mode=
INSERT&OVERWRITE&TABLE&dw_stage.ds_info_msg&partition(cal_dt)
SELECT&id&&&&
&&&&&&&,...
&&&&&&&,pv
&&&&&&&,date_sub('',7)&cal_dt
FROM&&&dw_stage.tiny_info_msg07;
更多开发者职位上
1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读hive学习笔记(个人)
把hive-0.9.0.tar.gz复制到/usr/local
解压hive-0.9.0.tar.gz与重命名
#cd /usr/local
#tar -zxvf hive-0.9.0.tar.gz
#mv hive-0.9.0 hive
修改/etc/profile文件。
#vi /etc/profile
export HIVE_HOME=/usr/local/hive
export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HIVE_HOME/bin
#source /etc/profile
cd &$HIVE_HOME
cp &hive-env.sh.template &hive-env.sh
cp &hive-default.xml.template &hive-site.xml
1.修改hadoop的hadoop-env.sh(否则启动hive汇报找不到类的错误)
export HADOOP_CLASSPATH=.:$CLASSPATH:$HADOOP_CLASSPATH:
$HADOOP_HOME/bin
2.修改$HIVE_HOME/bin的hive-config.sh,增加以下三行
export JAVA_HOME=/usr/local/jdk
export HIVE_HOME=/usr/local/hive
export HADOOP_HOME=/usr/local/hadoop--------------------------------------------------------------------------------------------------------------------------------- 1、hive 命令行模式,直接输入#/hive/bin/hive的执行程序,或者输入 #hive --service cli& 2、 hive web界面的 (端口号9999) 启动方式
#hive --service hwi &
用于通过浏览器来访问hive
http://hadoop0:9999/hwi/ 3、 hive 远程服务 (端口号10000) 启动方式(java访问必须打开)
#hive --service hiveserver &--------------------------------------------------------------------------------------------------------------------------------- metastore是hive元数据的集中存放地。metastore默认使用内嵌的derby数据库作为存储引擎 Derby引擎的缺点:一次只能打开一个会话 使用Mysql作为外置存储引擎,多用户同时访问&
配置MySQL的metastore 1.上传mysql-connector-java-5.1.10.jar到$HIVE_HOME/lib 2.登录MYSQL,创建数据库hive #mysql -uroot -padmin mysql& mysql&grant all ON hive.* TO root@'%' IDENTIFIED BY 'admin'; mysql& mysql&set global binlog_format='MIXED'; 3.修改$HIVE_HOME/conf/hive-site.xml
&property&
&name&javax.jdo.option.ConnectionURL&/name&
&value&jdbc:mysql://hadoop001:3306/hive?createDatabaseIfNotExist=true&/value&
&/property&
&property&
&name&javax.jdo.option.ConnectionDriverName&/name&
&value&com.mysql.jdbc.Driver&/value&
&/property&
&property&
&name&javax.jdo.option.ConnectionUserName&/name&
&value&root&/value&
&/property&
&property&
&name&javax.jdo.option.ConnectionPassword&/name&
&value&661366&/value&
&/property&--------------------------------------------------------------------------------------------------------------------------------- Hive的数据存储基于Hadoop HDFS Hive没有专门的数据存储格式 存储结构主要包括:数据库、文件、表、视图 Hive默认可以直接加载文本文件(TextFile),还支持sequence file& 创建表时,指定Hive数据的列分隔符与行分隔符,Hive即可解析数据--------------------------------------------------------------------------------------------------------------------------------- 类似传统数据库的DataBase 默认数据库&default& 使用#hive命令后,不使用hive&use &数据库名&,系统默认的数据库。可以显式使用hive& 创建一个新库 hive & create database test_--------------------------------------------------------------------------------------------------------------------------------- 与数据库中的 Table 在概念上是类似 每一个 Table 在 Hive 中都有一个相应的目录存储数据。例如,一个表 test,它在 HDFS 中的路径为:/ warehouse/test。 warehouse是在 hive-site.xml 中由 ${hive.metastore.warehouse.dir}& 指定的数据仓库的目录所有的 Table 数据(不包括 External Table)都保存在这个目录中。 删除表时,元数据与数据都会被删除 内部表和外部表的区别:
内部表:的创建过程和数据加载过程(这两个过程可以在同一个语句中完成),在加载数据的过程中,实际数据会被移动到数据仓库目录中;之后对数据对访问将会直接在数据仓库目录中完成。
删除表时,表中的数据和元数据将会被同时删除
外部表:只有一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。当删除一个 外部表 时,仅删除该链接--------------------------------------------------------------------------------------------------------------------------------- 创建内部表
create table inner_table (key string);
//如果不指定分隔符,默认分隔符为'\001'
create table inner_table (key string) row format delimited fields terminated by ','; &
//指定分隔符
create table inner_table (key string) row format delimited fields terminated by ',' stored as SEQUENCEFILE; //用哪种方式存储数据,SEQUENCEFILE是hadoop自带的文件压缩格式 查看表结构
describe inner_ 或者 desc inner_ 加载数据
load data local inpath '/root/test.txt' into table inner_
load data local inpath '/root/test.txt' overwriter into table inner_ //数据有误,重新加载数据 查看数据
select * from inner_table
select count(*) from inner_table 删除表&
drop table inner_table 重命名表
alter table inner_table rename to new_table_ 修改字段
alter table inner_table change key key1; 添加字段
alter table inner_table add columns(value string);--------------------------------------------------------------------------------------------------------------------------------- 创建分区表
create table partition_table(name string,salary float,gender string,level string) partitioned by(dt string,dep string) row format delimited fields terminated by ',' 查看表有哪些分区
SHOW PARTITIONS partition_& 查看表结构
describe partition_ 或者 desc partition_
加载数据到分区
load data local inpath '/hadoop/out/partition.txt' into table partition_table partition (dt='',dep='001'); 观察hdfs文件结构
${hive.metastore.warehouse.dir}/youDatabase.td/partition_table/... 增加分区
alter table partition_table addpatition(dt='',dep='001') localtion '/out/' partition(dt='',dep='002') localtion '/out/';--------------------------------------------------------------------------------------------------------------------------------- 在hive查询中有两种情况是不执行mapreduce的。
select * from partition_ & & & & //第一种
select * from partition_table where dt=''; & & & &
//第二种条件是partition时
select * from partition_table where dt='' and dep='001'; & & & & //第二种
case when .. then.. else.. end例子:
select name,gender,case when salary&5000 then 'L1' when salary&=5000 and salary &=10000 then 'L2' when salary&10000 then 'L3' else 'L0' end as salary_ &from partition_
select gender,sum(salary) from partition_t
hive.map.aggr控制如何聚合,默认是false,如果设置为true,hive将会在map端做第一级的集合,这样效率会变快,但是需要更多的内存,内存和数据成正比。
set hive.map.aggr=
select gender,sum(salary) from partition_t
版本支持having:
select gender,sum(salary) from partition_table where dt='' &group by gender having sum(salary)&25000;
版本不支持having:
select * from (select gender,sum(salary) as sum_salary from partition_table where dt='' &group by gender) &e where e.sum_salary&25000;
hive join只支持等值join!
reduce join:
select c.class,s.score from score_test s join class_test c on s.classno=c.
最为普通的join策略,不受数据量的大小影响,也叫做reduce side join,最没效率的一种join方式,它由一个mapreduce job完成。
首先将大表和小表分别进行map操作,在map shuffle的阶段每个mao output key变成了table_name_tag_prefix+join_column_value,但是在进行partition的时候它仍然只使用join_column_value进行hash。
map join 只有一个大表时:
select /*+MAPJOIN(c)*/ c.class,s.score from score_test s join class_test c on s.classno=c. & //小表放在MAPJOIN中
map join的计算步骤分两步,将小表的数据变成hashtable广播到所有的map端,将大表的数据进行合理的切分,然后在map阶段的时候用大表的数据一行一行的去探测(probe)
小表的hashtable,如果join key相等,就写入hdfs。map join之所以叫做map join是因为它所有的工作都在map端进行计算。
left semi join
select c.class,s.score from score_test s left semi join class_test c on s.classno=c.
order by(全局排序,所有数据都传给一个reduce来处理,处理大数据集来说,这个过程会很慢):
set hive.mapred.mode=(default value/默认值) //不严谨模式
set hive.mapred.mode= //严谨模式下必须制定limit否则会报错
select * from score_test order by score desc limit 1;
sort by 只会在每个reduce中进行排序,这样只保证每个reduce的输出数据时有序的(非全局排序),这样可以提高后面全局排序的效率
sort by 不受hive.mapred.mode是否为strict,nostrict的影响
使用sort by可以指定执行的reduce个数set mapred.reduce.tasks=3.
select * from score_test union all select * from score_//报错
select * from(select * from score_test Union all select * from score_test)--------------------------------------------------------------------------------------------------------------------------------- hive索引
特点: 1.索引key冗余存储,提供基于key的数据视图
2.存储设计以优化查询&检索性能
3.对于某些查询减少IO,从而提高性能
注意: 1.index的partition默认和数据表一致
2.视图上不能创建index
3. index可以通过stored as配置存储格式
create table index_test(id int,name string) partitioned by (dt string) row format delimited fields terminated by ','
创建临时数据表
create table index_tmp(id int,name string,dt string) row format delimited fields terminated by ',' &
加载数据:
loa data loc inpath 'hadoop/out/index.txt' into table index_
partition模式为不严谨
set hive.exec.dynamic.partition.mode=
打开动态partition
set hive.exec.dynamic.partition=
将index_tmp表数据插入到index_test中
insert overwriter table index_test partition(dt) select id,name,dt from index_
创建索引表
create index index_dom01 on table index_test(id) as 'org.apache.hadoop.hive.pactIndexHandler' w
rebuild一下
alter index index_dom01 &on index_
show index on index_&
drop index index_dom01 on index_ &
已学习课程数:3
已发表笔记数:1
把hive-0.9.0.tar.gz复制到/usr/local
解压hive-0.9.0.tar.gz与重命名
#cd /usr/local
#tar -zxvf hive-0.9.0.tar.gz
#mv hive-0.9.0 hive
修改/etc/profile文件。
#vi /etc/profile
export HIVE_HOME=/usr/local/hive
export PATH=$JAVA_HO
ZK&&Web界面, node-zk-browserWeb展示每个path的属性和数据。需要安装Node.js&和&node-zookeeper &taokeeper为zookeeper做了什么?1.CPU/MEM/LOAD的监控//load2.&ZK日志目录所在磁盘剩余空间监控3.&单机连接数的峰值报警4.&单机&Watcher数的峰值报警5.&节点自检:是指对集群中每个IP所在ZK节点上的PATH:
学习编程并没有那么困难,你只是需要一位大神来手把手来带领,专业的Java老师在线讲课,帮助你有效快速的掌握Java,真心想要学习java的伙伴可以加我们,想学习编程不要看网上的这些视频教程,没有任何意义,你操作过程中会遇到大量的问题,学习编程可以加群【116,804,208】这里有很多人指导你一起学习,Java零基础到项目实战公开课,我们的课程偏向实战性,想要学习Java的伙伴欢迎到我们的课堂来一起学习。
类似的数据结构使用awk进行分析。第一种方式假定&ip地址在逗号分隔的第8段中,可以进行如下操作(当然这也的假定条件本身就是有问题的) awk: cat&access_log.*&|&awk&-F&','&'{print&$8}' | awk -F ':' '{if($1==&\&ip\&&){print $2}}' |sort |uniq -c |sort -rn
&这个问题网上给出的一般都是修改编码集,但对有些朋友来说,貌似不好使,我自己就是受害者。
原因也确实是编码集,但是很多人像我都搞错了顺序呢!下面是原因以及解决! & & & & & &我安装mysql的时候默认编码是utf8&,然后我启动hive&它给我自动create了若干张表,然后我才把表的编码集改成latin,但是其实里面表的编码集还是utf8&导致后面的问题我把mysql下的database
1Hbase日常运维&& 1.1&&&&&&&监控Hbase运行状况1.1.1操作系统1.1.1.1&IOa.群集网络IO,磁盘IO,HDFS IOIO越大说明文件读写操作越多。当IO突然增加时,有可能:1.compact队列较大,集群正在进行大量压缩操作。2.正在执行mapreduce作业可以通过CDH前台查看整个集群综合的数据或进入指定机器的前台查看单台机器的数据:b.Io wait磁盘IO对集群的影响
o Storm优势 ? 1. 简单的编程模型。类似于MapReduce降低了并行批处 理复杂性,Storm降低了进行实时处理的复杂性。 ? 2. 服务化,一个服务框架,支持热部署,即时上线或下线App. ? 3. 可以使用各种编程语言。你可以在Storm之上使用各种 编程语言。默认支持Clojure、Java、Ruby和Python。要 增加对其他语言的支持,只需实现一个简单的Storm通信 协议即可。 ? 4. 容错性。Storm会管理工作进程和节点的故障。 ? 5. 水平扩展。计算是在多个线程、进程和
转自 如何在Latex中高亮显示R语言代码,请看下面的示例:\documentclass{beamer}
\usepackage{ctex}
\usepackage{listings} %插入代码
\usepackage{xcolor} %代码高亮
\lstset{numbers=left, %设置行号位置
numberstyle=\tiny, %设置行号大小
keywordstyle=\color{blue}, %设置关键字颜色
促使我想写这个系列的文章,是因为看到总有人提到相同的问题,犯相同的错误,曾经我也是这么过来的,不忍心看到后面还有人经常这么曲折的过来。先了解下,在bash脚本中,有三种引号1. 单引号 '
2. 双引号 &
3. 反引号 `
两个单引号包围起来的字符串就是普通的字符串,它将保留原始的字面意思.
两个双引号包围起来的字符串,部分特殊字符将起到它们的作用.
这些特殊字符有: 美元符$, 反斜杠\, 反引号,
Client调用DistributedFileSystem对象的create方法,创建一个文件输出流(FSDataOutputStream)对象 Client调用DistributedFileSystem对象的create方法,创建一个文件输出流(FSDataOutputStream)对象通过DistributedFileSystem对象与Hadoop集群的NameNode进行一次RPC远程调用,在HDFS的Namespace中创建一个文件条目(Entry),该条目没有任何的Block通过FSDataOu
Storm单机+zookeeper集群安装
1、安装zookeeper集群
2、准备机器
10.10.3.44 flumemaster1
10.10.3.129 flumemaster2
10.10.3.132 flumecollector1
10.10.3.115 flumeNg1
3、配置hosts文件(4台服务器上面都需要配置)
vi /etc/hosts
需求:将mysql中的表b05_age的数据导入hive中
yum install sqoop(sqoop必须安装在有hive client的服务器上面,如果没有执行yum install hive)
复制mysql的驱动jar到/usr/lib/sqoop/lib下面
2、异常处理
正确命令:(将关系型数据的表结构复制到hive中)
sudo -u hive sqoop create-hive-table --connect jdbc:my
准备机器:
192.168.1.241
192.168.1.242
192.168.1.243
1、查看ip地址是否为静态ip,如果不是进行配置
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.1.241
1. 我用的Oracle 客户端最好的工具是PL/SQL Developer, 当然,如果用免费的Toad也不错,感觉现在用Toad的人还是挺多的。
2. Oracle SQL如果想提高速度有几个方式
1)创建索引,尽量建立唯一索引
2)当要创建的索引列的值取值比较小,建议创建Bitmap的索引而不是默认的Btree的。(比如性别,学历等)
3)在where条件后尽量采用数字类型的字段,比varchar的速度快
4)尽量不用用IN,Not In,union这样的条件查
1. 通过freemarker静态化
2. 通过jsp filter静态化
主要思路:请求servlet-&判断静态文件是否存在并且静态文件创建时间是否在阀值之内--&如果不是,则访问数据库生成静态文件-&否则直接跳转静态文件
然后通过urlReWrite直接将访问servlet的请求改为html,完成seo
最后通过SQUID缓存前台数据
一、从数据库中取相应数据并替换掉模板中的对应标签,下面是一个简单的示例
java.io.IOE
java.io.InputS
java.io.OutputS
java.io.OutputStreamW
java.io.PrintW
java.net.InetSocketA
java.util.L
java.util.M
服务器优化说明
WEB服务器优化
更换tomcat5为tomcat6
版本copy测试服务版本即可
加大tomcat内存
修改bin下的catalina.sh文件,增加青绿色部分
JAVA_OPTS='-Xms768m -Xmx1648m -XX:MaxPermSize=512m'
加大tomcat连接数
修改conf下的server.xml文件,修改青绿色部分参数值
s.username,
decode(l.type,'tm','table lock','tx','row lock',null) lock_level,
o.object_name,
o.object_type,
s.serial#,
s.terminal,
s.machine,
s.program,
from v$session s,v$lock l,dba_objects o
where l.sid = s.s
一直以来都想接触Storm实时计算这块的东西,最近在群里看到上海一哥们罗宝写的Flume+Kafka+Storm的实时日志流系统的搭建文档,自己也跟着整了一遍,之前罗宝的文章中有一些要注意点没提到的,以后一些写错的点,在这边我会做修正;内容应该说绝大部分引用罗宝的文章的,这里要谢谢罗宝兄弟,还有写这篇文章@晨色星空J2EE也给了我很大帮助,这里也谢谢@晨色星空J2EE之前在弄这个的时候,跟群里的一些人讨论过,有的人说,直接用storm不就可以做实时处理了,用不着那么麻烦;其实不然,做软件开发的都知道模块化
1. Storm介绍2. Storm环境配置3. Storm程序流程4. Storm总结及问题1. Storm介绍 1.1&实时流计算背景 随着互联网的更进一步发展,信息浏览、搜索、关系交互传递型,以及电子商务、互联网旅游生活产品等将生活中的流通环节在线化。对于实时性的要求进一步提升,而信息的交互和沟通正在从点对点往信息链甚至信息网的方向发展,这样必然带来数据在各个维度的交叉关联,数据爆炸已不可避免。因此流式处理和NoSQL产品应运而生,分别解决实时框架和数据大 规模存储计算的问题。 流式处理可

我要回帖

更多关于 hive partition 的文章

 

随机推荐