Hive建表详解

一、hive建表语句

在Hive中,可以通过CREATE TABLE语句来创建一张表。基本语法如下:

CREATE [TEMPORARY] [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]
  [TBLPROPERTIES (property_name=property_value, ...)]

其中,TEMPORARY指定表为临时表,EXTERNAL指定表的数据是外部数据,IF NOT EXISTS在表已经存在时不会重新创建,COMMENT用于添加表的注释,PARTITIONED BY用于分区,CLUSTERED BY和SORTED BY用于排序,ROW FORMAT表示数据的行格式,STORED AS表示数据的存储格式,LOCATION指定存储的位置,TBLPROPERTIES用于添加表的其他属性。

二、在hive中怎么建表

在Hive中,可以通过以下步骤来建表:

1、打开命令行终端或者通过图形化界面打开Hive。

2、使用USE命令选择要使用的数据库。

USE database_name;

3、使用CREATE TABLE语句来创建表。

CREATE TABLE table_name(
  column1_name column1_type, 
  column2_name column2_type,
  ...)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t' //使用tab作为分隔符
LINES TERMINATED BY '\n' //使用换行符作为行分隔符
STORED AS TEXTFILE; //存储格式为TEXT文件

4、在表中插入数据。

INSERT INTO table_name VALUES(value1, value2, ...);

三、hive建表分隔符

在Hive中,通过ROW FORMAT DELIMITED指定分隔符。可以使用除了特殊字符和ASCII码以外的任意字符作为分隔符。常用的分隔符有逗号、制表符、竖线、空格等,如果要指定其他分隔符则需要加上ESCAPED BY关键字。

ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
ESCAPED BY '\\'
LINES TERMINATED BY '\n'

四、hive建表指定存储格式

在Hive中,可以通过STORED AS指定存储格式。

例如,存储为TEXT文件的示例:

CREATE TABLE table_name(
  column1_name column1_type, 
  column2_name column2_type,
  ...)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;

存储为AVRO文件的示例:

CREATE TABLE table_name(
  column1_name column1_type, 
  column2_name column2_type,
  ...)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS AVRO;

五、hive建表报错

在Hive中,创建表时可能会遇到各种错误。常见的错误有:

表名已经存在,部分字段类型不匹配,分隔符和存储格式不匹配等。当遇到错误时可以看看错误提示,尝试修改代码或者重启Hive。

六、hive建表分区

Hive中的分区是将一张表的数据分散存储在不同的目录中,方便查找和处理。

如下是对表按时间分区的示例:

CREATE TABLE table_name(
  column1_name column1_type, 
  column2_name column2_type,
  ...)
PARTITIONED BY (date_partition string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;

插入数据时,需要指定分区:

INSERT INTO TABLE table_name PARTITION (date_partition='2019-01-01') VALUES (value1, value2, ...)

七、查找hive建表日期

在Hive中,可以使用内置函数date_format来格式化日期,例如将”20220101″格式化为”2022-01-01″:

SELECT date_format('20220101', 'yyyy-MM-dd') as date;

八、hive建表指定序列化

在Hive中,可以通过SERDE指定序列化方式。

例如,使用JSON格式序列化的示例:

CREATE TABLE table_name(
  column1_name column1_type, 
  column2_name column2_type,
  ...)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
STORED AS TEXTFILE;

九、hive建表语句详解

CREATE TABLE语句是Hive中创建表的最基本的语法。语法结构非常灵活,可以通过不同的参数来满足不同的需求。

例如:

1、创建外部表:

CREATE EXTERNAL TABLE table_name(
  column1_name column1_type, 
  column2_name column2_type,
  ...)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
LOCATION 'hdfs://localhost:8020/user/hadoop/external_data/';

2、分区表:

CREATE TABLE table_name(
  column1_name column1_type, 
  column2_name column2_type,
  ...)
PARTITIONED BY (date_partition string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;

3、使用Bucket:

CREATE TABLE table_name(
  column1_name column1_type, 
  column2_name column2_type,
  ...)
CLUSTERED BY (column1_name) INTO 4 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;

总之,Hive建表语句非常灵活,可以根据不同的需求进行不同的设置。例如,可以指定分隔符、存储格式、分区等,来满足不同的业务需求。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/188724.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-28 13:33
下一篇 2024-11-28 13:33

相关推荐

  • Hive Beeline连接报错Connection Reset的解决方法

    对于Hive Beeline连接报错Connection Reset,可以从以下几个方面进行详细解答。 一、检查网络连接 首先需要检查机器与网络连接是否稳定,可以Ping一下要连接…

    编程 2025-04-27
  • 如何删除Hive的元数据统计信息

    本文将从以下几个方面详细阐述如何删除Hive的元数据统计信息。 一、元数据统计信息是什么? 元数据统计信息是相应数据表的统计信息,包括数据的行数、BLK(块)和文件大小等。 Hiv…

    编程 2025-04-27
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25

发表回复

登录后才能评论