在 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 中可用。