📜  如何在Hive创建表?

📅  最后修改于: 2021-10-27 06:46:39             🧑  作者: Mango

在 Apache Hive,我们可以创建表来存储结构化数据,以便稍后我们可以对其进行处理。 hive 中的表由多个列和记录组成。我们在任何数据库中创建的表都将存储在该数据库的子目录中。数据库存储在 HDFS 上的默认位置是/user/hive/warehouse。在hive 中创建表的方式与我们在SQL 中创建表的方式非常相似。我们可以对这些表执行各种操作,如连接、过滤等。

要执行以下操作,请确保您的配置单元正在运行。以下是在本地系统上启动配置单元的步骤。

第 1 步:启动所有 Hadoop 守护进程

start-dfs.sh                    # this will start namenode, datanode and secondary namenode

start-yarn.sh                   # this will start node manager and resource manager  

jps                             # To check running daemons

第 2 步:从终端启动 hive

hive

在Hive创建表

让我们先创建一个数据库,以便我们可以在其中创建表。创建数据库的命令如下所示。

创建数据库的语法:

CREATE DATABASE ;

命令:

CREATE DATABASE student_detail;   # this will create database student_detail

SHOW DATABASES;                   # list down all the available databases

现在,要访问这个数据库,我们必须使用它。

句法:

USE ;

命令:

USE student_detail;

在Hive创建表的语法

CREATE TABLE [IF NOT EXISTS]  (
    ,
     COMMENT 'Your Comment',
    ,
.
.
.
    
)
COMMENT 'Add if you want'
LOCATION 'Location On HDFS'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';

笔记:

1. 我们可以向表格以及每个单独的列添加注释。

2. ROW FORMAT DELIMITED显示每当遇到新行时,新记录条目就会开始。

3. FIELDS TERMINATED BY ‘,’表明我们使用了 ‘,’ 分隔符来分隔每一列。

4. 我们还可以使用LOCATION选项覆盖默认数据库位置。

因此,让我们借助下面显示的命令在我们的student_detail数据库中创建表student_data

CREATE TABLE IF NOT EXISTS student_data(
Student_Name STRING COMMENT 'This col. Store the name of student', 
Student_Rollno INT COMMENT 'This col. Stores the rollno of student',
Student_Marks FLOAT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','; 

我们已经成功地在我们的student_detail 数据库中创建了表 student_data ,其中 3 个不同的字段 Student_Name、Student_Rollno、Student_Marks 分别为 STRING、INT、FLOAT。

借助下面解释的命令,我们可以列出数据库中可用的表。

句法:

SHOW TABLES [IN ];

命令:

SHOW TABLES IN student_detail;

现在,最后,让我们检查一下我们的student_detail数据库和student_data表在 HDFS 上的位置。对于 Hadoop 2,移动到localhost:50070/,对于 Hadoop 3,移动到localhost:9870/ 。然后Utilities -> 浏览文件系统并转到/user/hive/warehouse ,这是创建 hive 数据库的默认位置。

在上图中,我们可以观察到student_data表在student_detail.db中的HDFS 中可用。