0


Hive之建表的三种方式

Hive建表方式统计了常见的三种建表,分别为直接命令行建表,like建表和as建表。
一、直接建表
#官网建建表格式整上,注意中括号里面的均为可选项:

CREATE[EXTERNAL]TABLE[IFNOTEXISTS] table_name
  [(col_name data_type [COMMENT col_comment],...)][COMMENT table_comment][PARTITIONED BY(col_name data_type [COMMENT col_comment],...)][CLUSTEREDBY(col_name, col_name,...)[SORTED BY(col_name [ASC|DESC],...)]INTO num_buckets BUCKETS][ROW FORMAT row_format][STORED AS file_format][LOCATION hdfs_path]

参数说明:

1.CREATETABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IFNOT EXIST 选项来忽略这个异常;
2.EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION);
3.LIKE 允许用户复制现有的表结构,但是不复制数据;
4.COMMENT 可以为表与字段增加描述、注释;
5.PARTITIONED BY 指定分区;
6.ROW FORMAT
  DELIMITED [FIELDSTERMINATEDBYchar][COLLECTION ITEMS TERMINATEDBYchar]
    MAP KEYSTERMINATEDBYchar][LINESTERMINATEDBYchar]| SERDE serde_name [WITH SERDEPROPERTIES
    (property_name=property_value, property_name=property_value,...)]
  用户在建表的时候可以自定义 SerDe 或者使用自带的 SerDe。如果没有指定 ROW FORMAT 或者 ROW FORMAT DELIMITED,将会使用自带的 SerDe;7.STORED AS
  SEQUENCEFILE //序列化文件| TEXTFILE   //普通的文本文件格式| RCFILE  //行列存储相结合的文件| ORC           //行列存储的文件| INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname  //自定义文件格式
  如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCE 或者STORED AS ORC;
8.LOCATION 指定表在HDFS的存储路径(默认地址/user/hive/warehouse);

二、like建表
#原理:复制表结构,但不复制数据;

createtable table1 like table2;

执行的结果是table1 的表与table2的表结构是一致的,但是table1表中的数据为空;
如果要导入数据可以再接以下命令:

insertinto table1 select*from table2;

或者使用as建表,但表结构会与原表不一致,具体往下看;

三、as建表
#原理:直接查询表结果插入到一张新表,没有复制表结构;
注意:

3.1as将查询字段以及结果作为一张新表;3.2 使用as创建的表,原表的分区,以及字段的约束等都会丢失(可以通过describe formatted查看);3.3 新表中会将原表的分区当做字段出现在新表中;

样例如下:
将查询的table2表中id=1的结果插入到table1;

createtable table1 asselect*from tabe2 where id=1;

分别通过以下命令查看:

showcreatetable table1
 showcreatetable table2

执行后会发现:as并没有把分隔符复制过来,只复制了查询的字段和字段对应的值:


本文转载自: https://blog.csdn.net/LNa520/article/details/131493793
版权归原作者 爱折腾的小土豆 所有, 如有侵权,请联系我们删除。

“Hive之建表的三种方式”的评论:

还没有评论