码迷,mamicode.com
首页 > 其他好文 > 详细

hive中表的创建和对表数据的操作

时间:2020-03-31 19:14:39      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:方式   类型   操作   external   serve   sts   textfile   数据   pat   

一、hive中表分为两种

  1、内部表(管理表):

      删除表的时候删除hdfs上的数据。

  2、外部表

      删除表的时候不删除hdfs上的数据。

      外部表不能使用insert的方式插入数据,所有的数据来源,都是外部别人提供的,所以hive认为自己没有独占这份数据,所以删除hive表的时候,不会删               除表里面的数据

二、对hive表中数据操作;

  1、insert  into  一般强烈不建议使用这种方式来插入数据,因为会在HDFS上面产生小文件,影响HDFS的元数据管理

  2、hive在建表的时候如果不使用分隔符,就默认使用\001.是一个asc码值,一个非打印字符。

  3、在创建表的时候指定分隔符

    创建内部表

    create table if not exists stu2(id int,name string) row format delimited fileds terminated by ‘\t‘ 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 ‘\t‘ 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中表的创建和对表数据的操作

标签:方式   类型   操作   external   serve   sts   textfile   数据   pat   

原文地址:https://www.cnblogs.com/nacyswiss/p/12606983.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!