hive创建外部表
时间: 2023-08-02 12:24:21 浏览: 52
好的,我可以帮你回答这个问题。创建外部表的语法格式如下:
```
CREATE EXTERNAL TABLE table_name(
column1 data_type,
column2 data_type,
...
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION 'hdfs://localhost:9000/path/to/table';
```
其中,`table_name` 是要创建的表名,`column1`、`column2` 是列名及其数据类型,`LOCATION` 是外部表的存储路径,`ROW FORMAT DELIMITED` 和 `FIELDS TERMINATED BY` 是定义数据的分隔符。
举个例子,如果你要创建一个名为 `student` 的外部表,可以按照以下方式编写 Hive SQL:
```
CREATE EXTERNAL TABLE student(
id INT,
name STRING,
age INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION 'hdfs://localhost:9000/data/student';
```
这里的 `student` 表有三个列,分别是 `id`、`name` 和 `age`,数据以逗号 `,` 为分隔符,存储在 `hdfs://localhost:9000/data/student` 路径下。
相关问题
hive 创建外部表同时导入数据
好的,下面是Hive创建外部表同时导入数据的步骤:
1. 打开Hive命令行终端,输入以下命令以创建一个新的数据库:
```
CREATE DATABASE my_database;
```
2. 使用以下命令来选择创建的数据库:
```
USE my_database;
```
3. 输入以下命令创建一个新的外部表,例如我们创建一个名为`my_table`的外部表:
```
CREATE EXTERNAL TABLE my_table (
id INT,
name STRING,
age INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION '/user/hive/data';
```
上述命令创建了一个外部表,其结构与前面创建的表相同,但是它的数据存储在`/user/hive/data`目录下,而不是Hive默认的目录中。
4. 接下来,使用以下命令将数据从文件中导入到新创建的外部表中,例如我们将数据文件存储在`/user/hive/data`目录下,并且文件名为`data.txt`:
```
LOAD DATA INPATH '/user/hive/data/data.txt' OVERWRITE INTO TABLE my_table;
```
上述命令将数据文件中的数据导入到名为`my_table`的外部表中,并将数据文件从`/user/hive/data`目录移动到Hive默认的目录中。
到这里,我们就完成了Hive创建外部表同时导入数据的过程。需要注意的是,外部表的数据存储在Hadoop集群中,并且Hive只是对这些数据的元数据进行管理,因此在删除外部表时,数据不会被删除。
hive 创建外部表时能否直接导入数据?
是的,Hive创建外部表时可以直接导入数据。下面是具体的步骤:
1. 打开Hive命令行终端,输入以下命令以创建一个新的数据库:
```
CREATE DATABASE my_database;
```
2. 使用以下命令来选择创建的数据库:
```
USE my_database;
```
3. 输入以下命令创建一个新的外部表,并直接从数据文件中导入数据,例如我们创建一个名为`my_table`的外部表:
```
CREATE EXTERNAL TABLE my_table (
id INT,
name STRING,
age INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION '/user/hive/data'
tblproperties ("skip.header.line.count"="1");
LOAD DATA LOCAL INPATH '/path/to/data/file/data.txt' OVERWRITE INTO TABLE my_table;
```
上述命令创建了一个外部表,其结构与前面创建的表相同,但是它的数据存储在`/user/hive/data`目录下,而不是Hive默认的目录中。在表的属性中,我们使用了`"skip.header.line.count"="1"`来跳过数据文件的第一行,这样就不会将数据文件的表头导入到表中。
4. 在创建外部表的同时,使用`LOAD DATA`命令将数据从本地文件中导入到外部表中,例如我们将数据文件存储在`/path/to/data/file/data.txt`目录下。这里使用了`LOCAL INPATH`参数来指明数据文件的本地路径,`OVERWRITE`参数表示如果表中已经有数据,则覆盖原有数据。
到这里,我们就完成了Hive创建外部表并直接导入数据的过程。需要注意的是,外部表的数据存储在Hadoop集群中,并且Hive只是对这些数据的元数据进行管理,因此在删除外部表时,数据不会被删除。