集成
Hive
登录后可跨设备保存划线和私人笔记登录
Apache Hive 自 4.0 版本起已支持 Apache Ozone。要使 Hive 能够处理 Ozone 路径,请确保将 ozone-filesystem-hadoop3 JAR 添加到 Hive 的类路径中。
支持的访问协议
Hive 支持以下协议来访问 Ozone 数据:
- ofs
- o3fs
- s3a
支持的副本类型
Hive 兼容以下任一方式配置的 Ozone 桶:
- RATIS(副本复制)
- 纠删码
在 Hive 中访问 Ozone 数据
Hive 提供两种方式与 Ozone 中的数据进行交互:
- 托管表(Managed Tables)
- 外部表(External Tables)
托管表
在 Ozone 中配置 Hive 数仓目录
要将托管表存储在 Ozone 中,请在 hive-site.xml 配置文件中更新以下属性:
<property>
<name>hive.metastore.warehouse.dir</name>
<value>ofs://ozone1/vol1/bucket1/warehouse/</value>
</property>创建托管表
你可以使用标准的 CREATE TABLE 语句来创建托管表:
CREATE TABLE myTable (
id INT,
name STRING
);向受管表中加载数据
可以从 Ozone 位置将数据加载到 Hive 表中:
LOAD DATA INPATH 'ofs://ozone1/vol1/bucket1/table.csv' INTO TABLE myTable;指定自定义 Ozone 路径
您可以使用 MANAGEDLOCATION 子句为数据库定义自定义 Ozone 路径:
CREATE DATABASE d1 MANAGEDLOCATION 'ofs://ozone1/vol1/bucket1/data';在数据库 d1 中创建的表将存储在指定路径下:
ofs://ozone1/vol1/bucket1/data
验证 Ozone 路径
你可以使用以下方式确认 Hive 引用了正确的 Ozone 路径:
SHOW CREATE DATABASE d1;输出示例:
+----------------------------------------------------+
| createdb_stmt |
+----------------------------------------------------+
| CREATE DATABASE `d1` |
| LOCATION |
| 'ofs://ozone1/vol1/bucket1/external/d1.db' |
| MANAGEDLOCATION |
| 'ofs://ozone1/vol1/bucket1/data' |
+----------------------------------------------------+外部表
Hive 支持创建外部表,以便查询已存储在 Ozone 中的现有数据。
创建外部表
CREATE EXTERNAL TABLE external_table (
id INT,
name STRING
)
LOCATION 'ofs://ozone1/vol1/bucket1/table1';- 对于外部表,数据预期由其他工具创建和管理。
- Hive 按原样查询这些数据。
- 注意:在 Hive 中删除外部表不会删除相关联的数据。
要为外部表设置默认路径,请在 hive-site.xml 文件中配置以下属性:
<property>
<name>hive.metastore.warehouse.external.dir</name>
<value>ofs://ozone1/vol1/bucket1/external/</value>
</property>此属性用于在未明确提供 LOCATION 时,指定外部表的基目录。
验证外部表路径
要确认表的元数据和位置,请使用:
SHOW CREATE TABLE external_table;输出示例:
+----------------------------------------------------+
| createtab_stmt |
+----------------------------------------------------+
| CREATE EXTERNAL TABLE `external_table`( |
| `id` int, |
| `name` string) |
| ROW FORMAT SERDE |
| 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' |
| STORED AS INPUTFORMAT |
| 'org.apache.hadoop.mapred.TextInputFormat' |
| OUTPUTFORMAT |
| 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' |
| LOCATION |
| 'ofs://ozone1/vol1/bucket1/table1' |
| TBLPROPERTIES ( |
| 'bucketing_version'='2', |
| 'transient_lastDdlTime'='1734725573') |
+----------------------------------------------------+使用 S3A 协议
除了 ofs 之外,Hive 还可以通过 S3 网关,借助 S3A 文件系统访问 Ozone。
更多信息请参阅:
- S3 协议
- Hadoop S3A 文档。
评论
登录后参与评论
正在加载评论…
KnowForge