Hive入门初体验

一.将本地文件导入Hive案例

在本地创建一张student.txt

在Hive中创建一个student表

导入本地student.txt到student表 

load data local inpath "/root/apps/hive-1.2.2/data/student.txt" into table student;

但是这样是有问题的——我们应该在创建表的时候指定分隔符。

我们把这张表删了重新创建一次,按正确方式导入。

 

二.Hive管理数据方式

Hive并不存储数据,甚至连元数据都不存储,而是管理存储在HDFS上的数据,通过Hive表导入数据只是简单地将数据移动(如果数据是在HDFS上)或复制(如果数据是在本地文件系统中) 

1)内部表

内部表和关系型数据库中的表在概念上很类似,每个表在HDFS上都有相应的目录来存储表的数据,在创建表时,会在默认目录下生成一个以文件名前缀为名的目录,该目录下存储表。

比如先前创建的student表就是属于内部表:

在使用drop删除表的时候将会删除对应表的元数据和相应仓库目录下的数据。 

2)外部表

外部表的数据不是存储在自己表所属的目录中,而是存储到别处,这样的好处是如果要删除这个外部表,外部表所指的数据时不会被删除的,他只会删除外部表对应的元数据

创建外部表时使用EXTERNAL关键字,告知Hive并不需要其管理外部表所操作的数据,该操作不会在数据仓库目录下自动创建以表名命名的目录,数据存储位置(HDFS下)由用户在创建表的时候使用LOCATION关键字来指定(该操作甚至不会检查用户指定的外部表是否存在)

3)内部表与外部表之间的抉择

如果所有在数据集上的处理都是使用Hive来完成,那么使用内部表;如果多用户之间共享同一数据集那么使用外部表

4)分区

在Hive中,表的每一个分区对应表目录下的一个子目录,所有分区的数据都是存储在对应的子目录中

5)桶

对指定的列值计算其hash,根据hash值切分数据,目的是为了并行,每个桶对应一个文件

三.Hive常用交互命令

我们还可以将结果(>)追加到文件中 

四.Hive其他命令操作

1.退出Hive窗口

exit和quit

exit:隐形提交数据,再退出

quit:不提交数据退出

新版本Hive就没有这种区别了。

2.在Hive命令窗口查看hdfs文件系统和本地文件系统

dfs -ls /

3.查看Hive命令历史记录——默认是存储在/root下。

五.常见属性配置

/*
设置打印列名
*/
<property>
    <name>hive.cli.print.header</name>
    <value>true</value>
    <description>Whether to print the names of the columns in query output.</description></property>
/*
设置打印当前db
*/
<property>
    <name>hive.cli.print.current.db</name>
    <value>true</value>
    <description>Whether to include the current database in the Hive prompt.</description></property>

重新进入客户端:

是不是更好看了一些呢~

配置hive的日志存储位置:

我们还可以通过命令行的方式来一次性地修改参数:

六.Hive数据类型

1)基本数据类型

其中的STRING与关系型数据库中varchar类似,他可以存储2GB的字符数。 

2)集合数据类型

create table test(
               name string,
               friends array<string>,
               children map<string,int>,
               address struct<street:string,city:string>
               )
               row format delimited
               fields terminated by ','
               collection items terminated by '_'
               map keys terminated by ':'
               lines terminated by '\n';
load data local inpath"/root/apps/hive-1.2.2/data/test.txt" into table test;

 

成功。 

猜你喜欢

转载自blog.csdn.net/qq_39327985/article/details/84957710