-
桶表(Bucket Table) 桶表是对数据进行哈希取值,然后放到不同文件存储。也就是说,桶表中的数据,是通过哈希运算后,将其打散,再存入文件当中,这样做会避免造成热块,从而提高查询速度。 桶表创建--案例 >create table bucket_table (sid int, sname string, age int) clustered by (sname) into 5 buckets; //创建一个桶表,这个桶表是以sname作为哈希运算,运算后的结果放到5个桶中查看全部
-
外部表创建--案例 >create external table external_student (sid int, sname string, age int) row format delimited fields terminate location '/input'; //创建一个以','为分隔符的外部表,这个外部表与HDFS中/input目录下的文件相关联查看全部
-
外部表(External Table) -指向已经在HDFS中存在的数据,可以创建Partition -它和内部表在元数据的组织上时相同的,而实际存储则有极大的差异 -外部表只有一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只会与外部数据创建一个链接,当删除该表时,仅删除该链接而不删除实际的数据查看全部
-
查看分区与未分区情况下执行计划有何不同: (执行计划读取的顺序是,从下往上,从右往左) >explain select * from from sample_data where gender = 'M'; //未分区 >explain select * from from partition_table where gender = 'M'; //分区查看全部
-
分区表(Partition): (可以提高查询的效率) -Partition对应于数据库Partiton列的密集索引 -在Hive中,表中的一个Partition对应于表下的一个目录,所有的Partition的数据都存储在对应的目录中 创建表--案例 >create table partition_table (sid int, sname string) partitioned by (gender string) row format delimited fields terminated by ','; //创建一张以','分隔,以性别进行分区的分区表partition_table >insert into table partition_table partition(gender = 'M') select sid,sname from sample_data where gender = 'M'; //将sample_data表中,gender为'M'的行数据,插入到paetition_table表中gender为'M'的分区中 >insert into table partition_table partition(gender = 'F') select sid,sname from sample_data where gender = 'F'; //将sample_data表中,gender为'F'的行数据,插入到paetition_table表中gender为'F'的分区中查看全部
-
内部表(Table) -与数据库的Table在概念上类似 -每一个Table在Hive中都有一个相应的目录(HDFS上的目录)存储数据 -所有的Table数据(不包括External Table)都保存在这个目录(HDFS目录)中 -表的元数据信息,存储在元数据数据库中(mysql) -删除表后,元数据和数据都会被删除 创建表--案例: >create table t1 (t1 int, tname string, age int); 在hive中创建一张表,如果不指定表所保存的位置,那么这张表会创建在HDFS文件系统中的/user/hive/warehouse目录下 >create table t2 (tid int, tname string, age int) location '/mytable/hive/t2'; 指定表的位置为HDFS中的/mytable/hive/t2 >create table t3 (tid int, tname string, age int) row format delimited fields terminated by ','; 表示以csv文件格式存储,因为csv存储的分隔符为逗号 //row format 指定表示行的格式 加入数据--案例: >create table t4 as select * from sample_data; //采用sample_data查询的集合来创建t4表 //查看HDFS中的文件发现,t4表中数据与数据之间没有分隔符 这里我们同样可以指定分隔符: >create table t4 row format delimited fields terminated by ',' as select * from sample_data; //采用sample_data查询的集合来创建t5表,并以','为分隔符 在一张表上加入新的列---案例: >alter table t1 add columns(english int); 删除一张表--案例: drop table t1; //当删除一张表时,它会把对应的文件放入HDFS的回收站中,所以删除之后 //我们可以利用一定的方式恢复表中的数据查看全部
-
HIVE数据存储 -基于HDFS文件系统 -没有专门的数据存储格式(默认的情况下采用'\t'(制表符)作为列与列之间的分隔符) -存储结构主要包括:数据库、文件、表、视图 -可以直接加载文本文件(.txt文件等)查看全部
-
Hive的数据类型 时间类型; Datas Timestamps Timestamps类型: 一种与时区无关的类型,各个时区表示方式是一样的,存储形式是一个偏移量(以UNIX存在以来的偏移量) >select unix_timestamps(); Datas类型:与一般的数据库(如oracle等)不同的是,不包含一天中的时间 可以利用cast函数,对Data和Timestamp进行相互转换。查看全部
-
HIVE数据类型 复杂数据类型: Array //数组类型(由一系列相同数据类型的元素组成) Map //集合类型,包含key -> value键值对,可以通过key来访问元素 Struct //结构类型,可以包含不同数据类型元素。 //Array类型 >create table student (sid int, sname string, grade array<float>); 插入数据形式: {1, 'Ada', [92, 93, 98]} //Map类型(key值相同,value将被覆盖) >create table student1 (sid int, sname string, grade map<string, float>); 插入数据形式: {1, 'Tom', <'mathematics', 85>} create table student3 (sid int, sname string, grades array<map<string, float>>); 输入数据形式: {1, 'Tom', [<'mathematics', 98>, <'English', 90>]} Struct数据类型: >create table student4 (sid int, info struct<name:string,age:int,sex:string>); 输入数据形式: {1, {'Tom', 19, '男'}}查看全部
-
Hive数据类型: 1.基本数据类型: 整数类型:tinyint/smallint/int/bigint 浮点数类型:float/double 布尔类型:boolean 字符串类型:string >create table person (pid int, pname string, married boolean, salary double); >create table test1 (vname varchar(20), cname char(20)); //varchar(20)指vname列最大长度为20个字符 //char(20)指cname列固定长度为20,即使这一列不满20个字符,也按照20来算。查看全部
-
Hive管理 (hive中的数据对应与hadoop hdfs中的一个文件夹) CLI(命令行方式) 直接输入hive,可进入CLI: >hive 以静默模式进入hive: >hive -S 不进入hive交互模式: >hive -e 'show tables'; >hive -e 'select * from test1'; 清屏: Ctrl + L 或者 !clear; 查看数据仓库中的表: show tables; 查看数据仓库中的内置函数: show functions; 查看表结构: desc <表名>; >desc test1; 查看HDFS上的文件: dfs -ls <目录>; >dfs -lsr /user; 执行Linux操作系统命令: !<命令> >!pwd 执行HQL语句: select *** from ***; >select * from test1; //这条语句不会转换成mapreduce作业 >select name from test1; //这时hive会将这条sql语句,解析成一个mapreduce作业,并提交到hadoop上进行执行。(我们在hive中执行的select语句,绝大多数,会被解析成mapreduce作业,进行执行) 执行SQL脚本: source <SQL文件>; >source /root/my.sql; //前提条件是root目录下,有my.sql这个文件查看全部
-
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://[host name]:3306/[database name]</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>[username]</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>[password]</value> </property> </configuration>查看全部
-
如果我们想将嵌入式模式更改成本地模式或者远程模式,把元信息存储在mysql中,就要更改hive安装目录下的conf文件夹下的配置文件。 当未配置conf目录下的配置文件,而直接执行bin目录下的hive时,它会自动创建一个derby数据库来保存元数据信息。 当执行过一次后,我们会发现多了一个metastore_db目录,这就是我们的derby数据库。(同时还多一个derby.log) 在嵌入式模式下,在某个目录下执行hive语句,就会在当前目录下保存元信息(创建metastore_db目录和derby.log文件)。查看全部
-
HIVE嵌入模式: -元数据信息被存储在HIVE自带的Derby数据库中 -只允许创建一个连接 -多用于Demo 本地模式: -元数据信息被储存在Myswl数据库中 -Mysql数据库与Hive运行在同一台物理机器上 -多用于开发和测试 远程模式: -Hive的元信息被保存在mysql数据库中 -Mysql数据库和Hive运行在不同的操作系统上 -多用于生产环境查看全部
-
这个网址能找到apache所有产品的安装包: archive.apache.org/dist/查看全部
举报
0/150
提交
取消