[Hive]Hive多分区操作

业务背景

mobile_log记录移动日志,现在需要将其保存到hive表中,将来可以按日期,小时进行统计,为此,需要建立一张具有日期、小时的hive分区表。

业务实现

hive分区表分为单分区表和多分区表,一个表可以拥有多个分区,每个分区都以文件夹的形式单独存放在表的文件目录下,详细可以参见Hive LanguageManual DDL

建立多分区表代码

drop table if exists pms.test_mobile_log;
create table pms.test_mobile_log
(
    id          bigint,
    infomation  string
)
partitioned by (ds string, hour string)
row format delimited fields terminated by ‘\t‘
lines terminated by ‘\n‘;

导入数据到多分区表中,实现方式有如下这些:

  • 建表的时候,就插入数据,参考:
drop table if exists pms.test_mobile_log;
create table pms.test_mobile_log
(
    id          bigint,
    infomation  string
)
partitioned by (ds string, hour string)
row format delimited fields terminated by ‘\t‘
lines terminated by ‘\n‘;

insert overwrite table pms.test_mobile_log partition(ds=‘2015-05-26‘, hour=‘13‘)
select
    id,
    category_name
from category;
  • 使用LOAD DATA方式导入数据,参考
load data inpath ‘/user/pms/workspace/ouyangyewei/temp2/category.txt‘ overwrite into table pms.test_mobile_log partition (ds=‘2015-05-26‘, hour=‘15‘);
  • 新增分区时导入数据,参考:
alter table pms.test_mobile_log add partition (ds=‘2015-05-27‘, hour=‘14‘) location ‘/user/pms/workspace/ouyangyewei/temp2/category.txt‘;

实验结果

表结构

CREATE  TABLE pms.test_mobile_log(
  id bigint,
  infomation string)
PARTITIONED BY (
  ds string,
  hour string)
ROW FORMAT DELIMITED
  FIELDS TERMINATED BY ‘\t‘
  LINES TERMINATED BY ‘\n‘
STORED AS INPUTFORMAT
  ‘org.apache.hadoop.mapred.TextInputFormat‘
OUTPUTFORMAT
  ‘org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat‘
LOCATION
  ‘hdfs://yhd-jqhadoop2.int.yihaodian.com:8020/user/hive/pms/test_mobile‘
TBLPROPERTIES (
  ‘numPartitions‘=‘2‘,
  ‘numFiles‘=‘2‘,
  ‘transient_lastDdlTime‘=‘1432711793‘,
  ‘numRows‘=‘0‘,
  ‘totalSize‘=‘3517‘,
  ‘rawDataSize‘=‘0‘)

表分区

$hadoop fs -ls /user/hive/pms/test_mobile_log/ds=2015-05-26
Found 2 items
drwxr-xr-x   - pms supergroup  0 2015-05-27 13:53 /user/hive/pms/test_mobile_log/ds=2015-05-26/hour=13
drwxr-xr-x   - pms pms         0 2015-05-27 15:29 /user/hive/pms/test_mobile_log/ds=2015-05-26/hour=15
时间: 2024-12-17 13:56:19

[Hive]Hive多分区操作的相关文章

[Hive] - Hive参数含义详解

hive中参数分为三类,第一种system环境变量信息,是系统环境变量信息:第二种是env环境变量信息,是当前用户环境变量信息:第三种是hive参数变量信息,是由hive-site.xml文件定义的以及当前hive会话定义的环境变量信息.其中第三种hive参数变量信息中又由hadoop hdfs参数(直接是hadoop的).mapreduce参数.metastore元数据存储参数.metastore连接参数以及hive运行参数构成. Hive-0.13.1-cdh5.3.6参数变量信息详解 参数

[Hive]Hive自定义函数UDF

当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数 用户自定义函数(user defined function),针对单条记录. 编写一个UDF,需要继承UDF类,并实现evaluate()函数.在查询执行过程中,查询中对应的每个应用到这个函数的地方都会对这个类进行实例化.对于每行输入都会调用到evaluate()函数.而evaluate()函数处理的值会返回给Hive.同时用户是可以重载evaluate方法的.Hive会像Java的方法重载一样,自动选择匹配的

[Hive]Hive将一行记录拆分成多行

业务背景 hive表test_user_browse记录了用户浏览过的商品,该表的数据如下: username product John product_a,product_b,product_c,product_d Tom product_e,product_f 现在,想要将product字段拆分为多行. 实现方式 现在借助lateral view 和explode()来完成. select username, browse_product from pms.test_user_browse

[hive] hive 内部表和外部表

1.创建内部表 hive (test1)> create table com_inner_person(id int,name string,age int,ctime timestamp) row format delimited fields terminated by ','; OK Time taken: 0.233 seconds hive (test1)> load data local inpath '/opt/hadoop/person.data' into table com

[Hive]Hive分区表新增字段

一直没有尝试,被分区的概念吓到了,今天尝试了下,很简单 hive (default)> desc pms.test_cross_sale_path; OK col_name data_type comment path_id string visit_track_id string visit_product_id bigint visit_category_id bigint visit_brand_id bigint rcmd_track_id string rcmd_product_id

[Hive]Hive数据倾斜(大表join大表)

业务背景 用户轨迹工程的性能瓶颈一直是etract_track_info,其中耗时大户主要在于trackinfo与pm_info进行左关联的环节,trackinfo与pm_info两张表均为GB级别,左关联代码块如下: from trackinfo a left outer join pm_info b on (a.ext_field7 = b.id) 使用以上代码块需要耗时1.5小时. 优化流程 第一次优化 考虑到pm_info表的id是bigint类型,trackinfo表的ext_fiel

hive里的优化和高级功能

在一些特定的业务场景下,使用hive默认的配置对数据进行分析,虽然默认的配置能够实现业务需求,但是分析效率可能会很低. Hive有针对性地对不同的查询进行了优化.在Hive里可以通过修改配置的方式进行优化. 以下,几种方式调优的属性. 1.列裁剪 在通过Hive读取数据的时候,并不是所有的需求都要获取表内的所有的数据.有些只需要读取所有列中的几列,而忽略其他列的的数据. 例如,表Table1包含5个列Column1.Column2.Column3.Column4.Column5.下面的语句只会在

详解Hive的架构、工作原理及安装步骤

一.Hive是什么? Hive 是基于 Hadoop 构建的一套数据仓库分析系统,它提供了丰富的 SQL 查询方式来分析存储在 Hadoop 分布式文件系统中的数据, 可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行,通过自己的 SQL 去 查询分析需要的内容,这套 SQL 简称 Hive SQL. 二.理解Hive 架构 Hive 架构可以分为四部分. 用户接口 Hive 对外提供了三种服务模式,即 Hive

详解Hive的架构及安装步骤

一.Hive是什么? Hive 是基于 Hadoop 构建的一套数据仓库分析系统,它提供了丰富的 SQL 查询方式来分析存储在 Hadoop 分布式文件系统中的数据, 可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行,通过自己的 SQL 去 查询分析需要的内容,这套 SQL 简称 Hive SQL. 二.理解Hive 架构 Hive 架构可以分为四部分. 用户接口 Hive 对外提供了三种服务模式,即 Hive