前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >hive基本概念

hive基本概念

作者头像
用户1171305
发布2017-12-28 11:50:11
8500
发布2017-12-28 11:50:11
举报
文章被收录于专栏:成长道路

1.hive是一个基于hadoop之上的一个数据仓库。可以处理的数据是关系型数据 库(结构性)、本地数据、hdfs数据(非结构化的数据); 2.hive是对处理数据的mapreduce的封装平台 3.hive会提供一些简单的类sql语句来代替mapreduce执行; 4.hive是为对数据库比较数据的非专业人员准备的 5.hive的操作语句:QL语句--》HSql--》类(like)sql 6.hive在处理业务的时候有一定的局限性,只能处理一些简单的。常用 的业务,如果碰到比较复杂的业务处理时,依然需要开发人员自己的 mapreduce应用。 7.使用hive操作的数据来源可以来自不同的软件系统:本地系统、hdfs系统、亚马逊s3; 8.hive上的操作的数据格式可以由用户进行设定,否则会出现存入的数据和读取的数据显示不一致,一般都会显示为null。 9.安装配置hive的前提条件: 安装jdk 安装hadoop 安装hive 10.hive的QL语句是基于sql92规范,能够支持大部分的语法和语义,但是并不完全支持,同时也增加增加一些hive自己的QL语法规则。 11.hive的存储数据的格式以表的形式: 外部表 内部表 桶表 分区表 12.安装与配置hive 说明: 1)安装hive时,首先确保hadoop已经安装完毕并且能正确使用 2)因为hive是基于hadoop平台,安装hive之后需要进行相关配置。相关文件:hive-evn.sh和hive-site.xml 3)建议配置hive的path环境:HIVE_HOME在/etc/profile,hive有自带的一个关系型数据库derby,如果使用自带的数据库,需要进行数据库的相关配置。如果开发者想更换数据库,例如更换mysql数据库,则需要进行配置文件的修改并且需要提供mysql数据库的驱动放到hive_home/lib下。目前hive主要是支持derby和mysql数据库

安装hive的步骤: 1)解压hive-0.12.0.tar.gz simple/:tar -zxvf /usr/java/hive-0.12.0.tar.gz 2)配置hive-evn.sh 在hive的安装目录下的conf文件中修改hive-env.sh文件(如果该目录下不存在该文件,可复制如下:) cp hive-evn.sh.template hive-evn.sh(hive-env.sh文件名是固定的,不得随意修改) 复制完毕之后 vim hive-site-evn.sh 增加hadoopd的安装目录 如:HADOOP_HOME=/simple/hadoop-2.4.1 3)修改环境变量:vim /etc/profile 添加hive的安装目录和path路径 HIVE_HOME=/simple/hive-0.12.0(新添加) export PATH=$JAVA_HOME/bin:$HIVE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH 4)source /etc/profile 5)测试hive的使用 切换到指定的目录(建议在hive的安装目录下hive-0.12.0或者hive-0.12.0/bin) 6)/>hive or ./hive

show databases;//查看所有的数据库 create database bigdata;//创建数据库 use  bigdata;//指定使用数据库 create table stu(id int,name string,age int) row format delimited fieds terminated by '';//创建stu表并指定表的格式 show tables;//查看数据库中所有的表 load data local inpath '/simple/student.txt' into table stu;//从本地导入到hive的指定数据表中(导入数据) 注意:在hive中创建表要指定表的row格式,否则不能正确读取导入的数据信息 说明:1)在使用hive的时候,确保hdfs和mapreduce启动(start-all.sh) 2)hive执行的数据类型比较少,常用的类型:int samllint tinyint lagerint boolean double long string map struct 3)hive的安装目录的结果 bin:可执行的文件(二进制),例如:hive hiveserver2 hive-confing.sh等 config:hive的配置文件,里面的配置文件都是默认的配置文件,它是缺省配置服务的。如果需要自定义,配置文件需要创建一个hive-site.xml docs:hive的参考文档 lib:存放jar的地方 metastore_db:该目录是启动hive的和时候,自动生成的一个目录,是用来存放hive的元数据信息。 4)derby数据库只支持单用户链接

13.内部表 create table t1(id int); create table t1(id int) row format delimited fields terminated by '\t'; load data local inpath '/simple/xxx.txt' into table t1; 表的修改: alter table targert_tab add columns(id int); 表的删除: drop table db_name; 删除表的时候,对跟随的数据也随着丢失 drop database db_name; 在删除数据库的时候,如果数据库中存在表,不让删除;

复制一张表结构,但不导入数据: creat table carcp like car; 说明: 以上操作完毕之后,可以再浏览器中查看hdfs上的目录结构进行对比 再启动hive的时候,会在hdfs上创建一个目录:user/hive/warehouse/库/表 数据信息在hdfs上都是以目录和文件形式存在,在操作数据的时候需要hdfs和 metastore配合使用。 http://192.168.189.100:50070/user/hive/warehouse/库/表/stu.txt 如果在Windows下面远程下载stu.txt文件时,会存在访问不到linux中hdfs路径,此时 需要host的目录:c:\windows\System32\drivers\etc\hosts文件 编辑hosts文件并添加: 192.168.189.100 iflysee.hfpan.com

14.外部表 创建表: create external table external_tab(id int)row format delimited fields terminated by '/t' localtion '/out' 此处的’/out'不会在hive的仓库目录(/user/hive/warehose)中生成,而是直接在 hdfs的根目录生成(hdfs://192.168.203.100:9000/out) 加载数据: load data local inpath '/simple/xxx.txt' into table external_table; 当删除外部表的时候,metastore中元数据信息会丢失,但是外部目录中指数据不会 丢失,这说明metastore中的描述信息可以作为外部数据信息的一个引用。

15.分区表 创建表 create table t2(id int) partitioned by (day int); create table t3(rectime string,msisdn string)partitioned by(daytime string, city string) row format delimited fields terminated by ' ' stored as textfile; //加载数据到分区 load data local inpath '/simple/gps.txt' overwirte into table t3 partition(nation=‘china’); 创建完分区表之后,可以通过desc 表明查看表的结构和外部表的结构有什么不同 \>desc table_name; ok address string None year    int    None num     int    None nation  string None #Partition Information #col_name data_type comment 从上面可以看出nation字段虽然是分区字段,但是也可以作为表的一个字段属性,也就是说明在操作表 的时候,该字段也可以作为参数操作。 说明:再给分区表加载数据的时候,可以通过分区字段指定分区值,那么对应的数据会在Hive的数据仓库中的数据库下创建 不同的分区路径,形如:nation='china' nation=‘usa'

查看数据: select * from table_name; select count(*) from table_name; select * from table_name where year='2014' and nation='usa'; show tables '*ca*'; show partitions table_name; 删除信息: 删除表:drop table table_name; 删除分区:alter table table_name drop partition(nantion='usa'); 分区表跟内部表删除数据原理相似,即删除元数据信息metastore时,实际数据也会随着丢失

alter table pcar add(drop) partition (nation='uk'); show partitions pcar;

16.桶表 更高效!可取样!主要用于大数据集群的取样! 桶的原理是对一个表(或者分区)进行切片,选择被切片的字段,用字段与个数的hash值进行存储入桶。 创建表: create table stu(id int,name string) clustered by(id) into 4 buckets row format delimited fields terminated by ' ';

insert into table t4 select id from t3; 桶表是对数据进行哈希取值,然后放到不同文件中存储。

加载数据:

set hive.enforce.bucketing=true; insert into table bucket_name select id from stu; insert overwirte table bucket_name select id from stu; 数据加载到桶表时,会对字段取哈希值,然后与桶的数量取模。把数据放到对应的文件中。 抽样查询: select * from bucket_name tablesample(bucket 1 out of 4 on id);

set hive.enforce.bucketing=true; select * from student tablesample(bucket 2 out of 3 on id); create table sct like student; insert overwrite table sct select * from student; 把一个hive的表导入到另一个已建hive表 insert overwrite table table_new select * from student;

17.视图 创建视图: create view v1 as select * from table_name; 删除一个视图的时候不能使用 drop table view_name; 而是使用drop view view_name;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-08-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档