使用hive需要hive环境

启动Hive

进入HIVE_HOME/bin,启动hive

./hive

内部表

  • 建表
hive> create table fz
> (id int,name string,age int,tel string)
> ROW FORMAT DELIMITED
> FIELDS TERMINATED BY ','
> STORED AS TEXTFILE;

创建完成后使用 show tables; 查看是否创建成功.

hive> show tables;

OK

fz

Time taken: 0.043 seconds, Fetched: 9 row(s)

  • 导入数据

提前准备好一个txt文件,文件内容如下

,fz,,
,test,,
,dx,,

接下来导入数据

hive> load data local inpath '/Users/FengZhen/Desktop/Hadoop/hive/testfile/fz.txt' into table fz;
Loading data to table default.fz
Table default.fz stats: [numFiles=, totalSize=]
OK
Time taken: 0.784 seconds

查看表中的数据。

hive> select * from fz;
OK
fz
test
dx
Time taken: 0.445 seconds, Fetched: row(s)

数据已经导入成功。

在导入数据的过程中,如果在建表的过程中没有指定location,那么就会在hive.metastore.warehouse.dir指定的路径下,以表名创建一个文件夹,之后所有有关该表的数据都会存储到此文件夹中。

hive.metastore.warehouse.dir是在HIVE_HOME/conf/hive-site.xml中配置的,如下,我配置的路径为/user/hive/warehouse

<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>

现在去HDFS中就可以看到该路径下有个文件夹名为fz,fz下有个文件就是我们在导入数据时,从本地文件系统拷贝到HDFS中的fz.txt.

EFdeMacBook-Pro:conf FengZhen$ hadoop fs -ls /user/hive/warehouse/fz
Found items
-rwxr-xr-x FengZhen supergroup -- : /user/hive/warehouse/fz/fz.txt
  • 删除该表
hive> drop table fz;
OK
Time taken: 0.141 seconds

该表删除后,再去HDFS中看一下还有没有之前创建的文件夹。

hadoop fs -ls /user/hive/warehouse

结果显示该文件夹已经没有了,也就是说当我们在删除内部表的时候,不仅删除了表中的数据,还删除了数据文件。

外部表

  • 建表

hive> create external table fz_external_table(id int,name string,age int,tel string)

> ROW FORMAT DELIMITED

> FIELDS TERMINATED BY ','

> STORED AS TEXTFILE

> location '/user/hive/external/fz_external_table';

建外部表时要加external关键字,我在建表时指定了location,当然也可以不指定,不指定就默认使用hive.metastore.warehouse.dir指定的路径。

  • 导入数据

提前准备好数据文件fz_external.txt,数据同上,只是换了个名。

,fz,,
,test,,
,dx,,183938384983
4,test1,22,1111111111

接下来进行导入数据的操作

hive> load data local inpath '/Users/FengZhen/Desktop/Hadoop/hive/testfile/fz_external_table.txt' into table fz_external_table;

Loading data to table default.fz_external_table

Table default.fz_external_table stats: [numFiles=0, totalSize=0]

OK

Time taken: 0.224 seconds

查看表内数据。

hive> select * from fz_external_table;
OK
fz
test
dx
test1
Time taken: 0.06 seconds, Fetched: row(s)

现在数据已经导入成功,接下来去HDFS中查看以下,在location指定的路径下

EFdeMacBook-Pro:testfile FengZhen$ hadoop fs -ls /user/hive/external/fz_external_table;
Found items
-rwxr-xr-x FengZhen supergroup -- : /user/hive/external/fz_external_table/fz_external_table.txt

可以看到,往外部表中导入数据的时候,本地文件系统中的数据文件也被拷贝到了HDFS中。

现在来删除外部表,看一下HDFS中文件有没有被删除。

hive> drop table fz_external_table;
OK
Time taken: 0.103 seconds

外部表已经删除成功,看下HDFS中

EFdeMacBook-Pro:testfile FengZhen$ hadoop fs -ls /user/hive/external/fz_external_table;
Found items
-rwxr-xr-x FengZhen supergroup -- : /user/hive/external/fz_external_table/fz_external_table.txt

可以看到,HDFS中数据文件在表被删除的情况下,还是存在的,也就是说删除外部表,只能删除表数据,并不能删除数据文件。

内部表与外部表的不同

  • 创建外部表需要添加 external 字段。而内部表不需要。
  • 删除外部表时,HDFS中的数据文件不会一起被删除。而删除内部表时,表数据及HDFS中的数据文件都会被删除。

Hive创建内部表、外部表的更多相关文章

  1. 一起学Hive——创建内部表、外部表、分区表和分桶表及导入数据

    Hive本身并不存储数据,而是将数据存储在Hadoop的HDFS中,表名对应HDFS中的目录/文件.根据数据的不同存储方式,将Hive表分为外部表.内部表.分区表和分桶表四种数据模型.每种数据模型各有 ...

  2. hive内部表&外部表介绍

    未被external修饰的是内部表(managed table),被external修饰的为外部表(external table):区别:内部表数据由Hive自身管理,外部表数据由HDFS管理:内部表 ...

  3. hadoop笔记之Hive的数据存储(外部表)

    Hive的数据存储(外部表) Hive的数据存储(外部表) 外部表 指向已经在HDFS中存在的数据,可以创建Partition 它和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异 外部 ...

  4. Hive基础(5)---内部表 外部表 临时表

    1.外部表 关键字:EXTERNAL 外部表创建时需要指定LOCATION 删除外部表时,数据不被删除 CREATE EXTERNAL TABLE page_view(viewTime INT, us ...

  5. hive 四种表,分区表,内部,外部表,桶表

    Hive四大表类型内部表.外部表.分区表和桶表 一.概述 总体上Hive有四种表:外部表,内部表(管理表),分区表,桶表.分别对应不同的需求.下面主要讲解各种表的适用情形.创建和加载数据方法. 二.具 ...

  6. Hive内部表外部表转化分析(装)

    link:http://anyoneking.com/archives/127hive表分为内部表和外部表.外部表在删除的时候并不会删除到hdfs中的文件,比较安全,所以对于重要的需要进行分析的日志建 ...

  7. 分区表,桶表,外部表,以及hive一些命令行小工具

    hive中的表与hdfs中的文件通过metastore关联起来的.Hive的数据模型:内部表,分区表,外部表,桶表受控表(managed table):包括内部表,分区表,桶表 内部表: 我们删除表的 ...

  8. hive中与hbase外部表join时内存溢出(hive处理mapjoin的优化器机制)

    与hbase外部表(wizad_mdm_main)进行join出现问题: CREATE TABLE wizad_mdm_dev_lmj_edition_result as select *  from ...

  9. oracle-对象表-外部表

    http://www.blogjava.net/decode360/archive/2008/10/16/286802.html create or replace type person as ob ...

随机推荐

  1. mysql 内置功能 触发器介绍

    使用触发器可以在用户对表进行[增.删.改]操作时前后定义一些操作,注意:没有查询 创建触发器 create trigger 触发器的名字 之前(before)或者之后(after)  行为(inser ...

  2. office 2016 install(office2016组件自定义安装激活程序) v5.9.3中文绿色版

    下载地址  http://www.ddooo.com/softdown/71741.htm#dltab office 2016 install是目前下载office2016和office2016组件最 ...

  3. Android APP安装后不在桌面显示图标的应用场景举例和实现方法

    最近在为公司做一款车联网的产品,由于公司本身擅长于汽车解码器的研发,所以该产品的诊断功能的实现除了使用目前市面上车联网产品中大量使用的OBD协议外,还会使用一些专车专用协议去实现一些特殊的诊断功能,如 ...

  4. [LeetCode] 529. Minesweeper_ Medium_ tag: BFS

    Let's play the minesweeper game (Wikipedia, online game)! You are given a 2D char matrix representin ...

  5. L1正则化和L2正则化

    L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择 L2正则化可以防止模型过拟合(overfitting):一定程度上,L1也可以防止过拟合 一.L1正则化 1.L1正则化 需注意, ...

  6. win 7 和 winserver 2008 下,布署网站遇到的错误解决方法

    本人亲测,有效. 1.如果只列出目录: web.config的system.webServer配置节下是否有这个: <modules runAllManagedModulesForAllRequ ...

  7. 【环境变量】删掉centos原有的openjdk并安装sun jdk

    一.卸载原有openjdk rpm -qa | grep java 之后,将展示出来的全部卸载掉,我这里是5个 rpm -e --nodeps java-1.7.0-openjdk-1.7.0.111 ...

  8. Zooming

    Zooming 是一款纯 javascript 图片缩放库,主要特点有: 不依赖其他库,纯 JavaScript 实现,支持移动设备: 流畅的动画: 可缩放高清图像: 易于集成和定制. 使用方法 1. ...

  9. SLF4J和log4j的使用

    概念 SLF4J:即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统.按照官方的说法,SLF4J是一个用于日志系统的简 ...

  10. java commons.lang3 ArrayUtils使用

    java commons.lang3 ArrayUtils使用import org.apache.commons.lang3.ArrayUtils; /** *数组追加数组,不重复 */ public ...