hive中表的创建和对表数据的操作
Posted nacyswiss
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive中表的创建和对表数据的操作相关的知识,希望对你有一定的参考价值。
一、hive中表分为两种
1、内部表(管理表):
删除表的时候删除hdfs上的数据。
2、外部表
删除表的时候不删除hdfs上的数据。
外部表不能使用insert的方式插入数据,所有的数据来源,都是外部别人提供的,所以hive认为自己没有独占这份数据,所以删除hive表的时候,不会删 除表里面的数据
二、对hive表中数据操作;
1、insert into 一般强烈不建议使用这种方式来插入数据,因为会在HDFS上面产生小文件,影响HDFS的元数据管理
2、hive在建表的时候如果不使用分隔符,就默认使用 01.是一个asc码值,一个非打印字符。
3、在创建表的时候指定分隔符
创建内部表
create table if not exists stu2(id int,name string) row format delimited fileds terminated by ‘ ‘ stored as textfile location ‘/user/hive/warehouse/myhive/stu2‘;
创建外部表
create external table if not exists student(s_id string,s_name string) row format delimited fields terminated by ‘ ‘ stored as textfile location ‘/user/hive/warehouse/myhive/student‘;
4、根据查询结果创建表,并且将查询结果的数据放到新建的表里面去
create table stu3 as select * from stu2;这种方式用的比较多
根据已经存在的表结构创建表,这种方式只复制表结构:
create table stu4 like stu2;
5、查询表的类型:
desc formatted stu2;
6、如何向外部表里面加载数据呢?
1、从本地文件系统向表中加载数据
load data local inpath ‘/export/servers/hivedatas/student.csv‘ into table student;
加载数据并覆盖已有数据
load data local inpath ‘/export/servers/hivedatas/student.csv‘ overwrite into table student;
2、从hdfs文件系统向表中加载数据(需要提前将数据上传到hdfs文件系统,其实就是一个移动文件的操作)
load data inpath ‘/hivedatas/techer.csv‘ into table techer;
以上是关于hive中表的创建和对表数据的操作的主要内容,如果未能解决你的问题,请参考以下文章