hive建表

1.建表

    Create [EXTERNAL] TABLE [IF NOT EXISTS] table_name

    (

      [(col_name data_type [COMMENT col_comment], ...)]

    )

      [COMMENT table_comment]

  [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]

  [CLUSTERED BY (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. PARTITIONED 表示的是分区,不同的分区会以文件夹的形式存在,在查询的时候指定分区查询将会大大加快查询的时间。
  2. CLUSTERED表示的是按照某列聚类,例如在插入数据中有两项“张三,数学”和“张三,英语”,若是CLUSTERED BY name,则只会有一项,“张三,(数学,英语)”,这个机制也是为了加快查询的操作。
  3. STORED是指定排序的形式,是降序还是升序。
  4. BUCKETS是指定了分桶的信息,这在后面会单独列出来,在这里还不会涉及到。
  5. ROW FORMAT是指定了行的参数。还要指定列的信息,如ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t‘ LINES TERMINATED BY ‘\n‘
  6. STORED AS是指定文件的存储格式。Hive中基本提供两种文件格式:SEQUENCEFILE和TEXTFILE,序列文件是一种压缩的格式,通常可以提供更高的性能。
  7. LOCATION指的是在HDFS上存储的位置

  示例:

    create table if not exists studentno

    (

        stuno string comment ‘student number‘,

        stuname string comment ‘student name‘

    )

    comment ‘student information‘

    row format delimited fileds terminated by ‘\t‘ lines terminated by ‘\n‘

    stored as textfile

    location ‘/ex_tmp/student‘;

2.建立外部表

  建外部表时要加external关键字

  create external table tablename(...)

3.删除表

  drop table [IF EXISTS] tablename;

4.内部表和外部表的区别

  创建外部表需要添加 external 字段。而内部表不需要。

  删除外部表时,HDFS中的数据文件不会一起被删除。而删除内部表时,表数据及HDFS中的数据文件都会被删除。

5.建立临时表

  create temporary table tablename as(...)

  临时表建立只能提供给当前使用,退出的时候就会被自动删除掉。

6.一些操作

  desc tablename;查看表结构信息

  describe tablename;查看表的信息

  show partitions tablename;查看表分区

原文地址:https://www.cnblogs.com/zzhangyuhang/p/8698353.html

时间: 2024-08-18 18:03:13

hive建表的相关文章

hive建表并load数据小结

一.建表的时候要指明分隔符 hive建表时默认的分隔符是'\001',若在建表的时候没有指明分隔符,load文件的时候文件的分隔符需要是'\001'的, 若文件分隔符不是'\001',程序不会报错,但表查询的结果会全部为'NULL', 如何制作分隔符为'\001'的测试文件 用vi编辑器Ctrl+v然后Ctrl+a就可以通过键盘输入'\001' 也可以在建表的时候指明分隔符为制表符,然后测试文件用excel制表符制作, 例如: create table pokes(foo INT,bar STR

Hive建表-分隔符

在hive建表中,默认的分隔符为  ‘,’ ,可以指定想用的分隔符 hive默认的列分割类型为org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe,这其实就是^A分隔符,hive中默认使用^A(ctrl+A)作为列分割符,如果用户需要指定的话,等同于row format delimited fields terminated by '\001',因为^A八进制编码体现为'\001'.所以如果使用默认的分隔符,可以什么都不加,也可以按照上面的指定加‘

hive建表与数据的导入导出

建表: create EXTERNAL table tabtext(IMSI string,MDN string,MEID string,NAI string,DestinationIP string,DestinationPort string,SourceIP string,SourcePort string,PDSNIP string,PCFIP string,HAIP string,UserZoneID string,BSID string,Subnet string,ServiceOp

hive建表没使用LZO存储格式,可是数据是LZO格式时遇到的问题

今天微博大数据平台发邮件来说.他们有一个hql执行失败.可是从gateway上面的日志看不出来是什么原因导致的,我帮忙看了一下.最后找到了问题的解决办法,下面是分析过程: 1.执行失败的hql: INSERT OVERWRITE TABLE brand_ad_user_with_interact_score_3 select a.uid, a.brand, a.friend, CASE b.weight WHEN NULL THEN '0.000000' ELSE b.weight END fr

hive建表没使用LZO存储格式,但是数据是LZO格式时遇到的问题

今天微博大数据平台发邮件来说,他们有一个hql运行失败,但是从gateway上面的日志看不出来是什么原因导致的,我帮忙看了一下,最后找到了问题的原因,以下是分析过程: 1.运行失败的hql: INSERT OVERWRITE TABLE brand_ad_user_with_interact_score_3 select a.uid, a.brand, a.friend, CASE b.weight WHEN NULL THEN '0.000000' ELSE b.weight END from

hive建表语句

原文:http://jingyan.baidu.com/article/a378c96092cf56b328283006.html 创建表的语句:Create [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_com

hive 建表导入数据

1. hive> create table wyp > (id int, name string, > age int, tel string) > ROW FORMAT DELIMITED > FIELDS TERMINATED BY '\t' > STORED AS TEXTFILE; 2. cat wyp.txt 1       wyp     25      13188888888888 2       test    30      1388888888888

各种数据格式的Hive建表语句

Xml格式 CREATE EXTERNAL TABLE Gateway_pmsarisoap( BookingSoapLogID STRING,? GuidNo STRING,? SoapType STRING,? SoapContent STRING,? InsertDate STRING,? SourceOpsType STRING) PARTITIONED BY (? ? `dt` string) ROW FORMAT SERDE 'com.ibm.spss.hive.serde2.xml

hive中执行hql或建表语句时,抛出Display all 459 possibilities? (y or n)错误的解决方法

我昨天在hive上建表,一直报Display all 459 possibilities? (y or n) ,之前我以为是建表语句有问题,一直在改语句,后来在网上搜这个错误,原来语句里混杂了Tab缩进,这可能是我使用notepad++的时候打出来的: 解决方案:把它粘到plsql里,将空格和缩进都重新打一遍就好了,在plsql里可以用tab键: 原文地址:https://www.cnblogs.com/xiao02fang/p/10006748.html