Apache Hive3定位表并更改其位置

Apache Hive3表

      • 1、Apache Hive3表概述
      • 2、Hive3表存储格式
      • 3、Hive3事务表
      • 4、Hive3外部表
      • 5、定位Hive3表并更改位置
      • 6、使用点表示法引用表
      • 7、理解CREATE TABLE行为





1、Apache Hive3表概述


Apache Hive3表类型的定义和表类型与ACID属性的关系图使得Hive表变得清晰。表的位置取决于表的类型。您可以根据其支持的存储格式选择表的类型

您可以创建ACID(原子性、一致性、隔离性和持久性)表用于不受限制的事务或仅插入的事务。这些表是Hive托管表。数据与Schema一起位于Hive Metastore中。或者您可以创建一个外部表用于非事务性使用。数据位于Hive Metastore外部。Schema元数据位于Hive Metastore内部。因为外部表受Hive的控制很弱,所以该表不符合ACID

下图描述了Hive表的类型:

在这里插入图片描述

以下表格显示了可以使用Hive创建的表的类型、是否支持ACID属性、所需的存储格式以及关键的SQL操作:

表类型ACID文件格式插入更新/删除
托管表:CRUD事务支持ORC支持支持
托管表:仅插入式事务支持任意格式支持不支持
托管表:临时不支持任意格式支持不支持
外部表不支持任意格式支持不支持

虽然不能使用UPDATE或DELETE语句删除某些类型的表中的数据,但是可以对任何类型的表使用DROP PARTITION来删除数据

2、Hive3表存储格式


CRUD表中的数据必须为ORC格式。实现支持AcidInputFormat和AcidOutputFormat的存储处理程序等效于指定ORC存储

仅插入使用的表支持所有文件格式

默认情况下,托管表的存储类型为“优化行列”(ORC)。如果在表创建的过程中未指定任何存储,或者指定了ORC存储,则将接受默认的设置,获得具有插入、更新和删除(CRUD)功能的ACID表。如果指定其他任何存储类型,例如TEXT、CSV、AVRO或JSON,则将获得仅插入的ACID表,您不能更新或删除仅插入表中的列

3、Hive3事务表


事务表是驻留在Hive仓库中的ACID表。为了实现ACID合规性,Hive必须管理表,包括对表数据的访问。只有通过Hive才能访问和更改托管表中的数据。由于Hive可以完全控制托管表,因此Hive可以广泛地优化这些表

与用作联机分析处理(OLAP)系统相反,Hive旨在支持相对较低的事务率。您可以使用SHOW TRANSACTIONS命令列出未完成和中止的事务

Hive3中的事务表与非ACID表相当。Hive3事务表中不需要分桶或排序。分桶不会影响性能。这些表与原生的云存储兼容

Hive支持每个事务一个语句,该语句可以包含任意数量的行、分区或表

4、Hive3外部表


外部表数据不是由Hive拥有或控制的。当您想使用Hive以外的其他工具直接在文件级别访问数据时,通常使用外部表。您还可以使用存储处理程序(例如Druid或HBase)来创建位于Hive元存储之外的表

在外部表上,Hive3不支持以下功能:

  • 查询缓存
  • 物化视图(仅限于有限的方式)
  • 自动运行时过滤
  • 插入后的文件合并
  • ARCHIVE、UNARCHIVE、TRUNCATE、MERGE和CONCATENATE。这些语句仅适用于Hive管理表

在外部表上运行DROP TABLE时,默认情况下,Hive仅删除元数据(Schema)。如果您希望DROP TABLE命令也删除外部表中的实际数据,就像DROP TABLE在托管表上所做的那样,则需要将external.table.purge属性设置为true

5、定位Hive3表并更改位置


您需要知道Hive在HDFS上存储表的位置以及安装服务后如何更改仓库位置

您在CDP中创建的新表存储在托管表的Hive仓库或外部表的Hive仓库中。以下默认仓库位置位于HDFS文件系统中:

/warehouse/tablespace/managed/hive
/warehouse/tablespace/external/hive

托管表驻留在托管表空间中,只有Hive可以访问。默认情况下,Hive假定外部表驻留在外部表空间中

要确定托管或外部表类型,您可以运行如下命令:

DESCRIBE EXTENDED table_name;

要访问对象存储或文件系统(如HDFS)中的外部表,需要设置Ranger策略

更改Hive仓库位置的功能旨在在安装服务后立即使用。您可以使用Cloudera Manager中的Hive Metastore Action菜单更改仓库的位置,步骤如下:

1) 在Cloudera Manager中,单击集群->Hive->操作菜单->创建Hive仓库目录

在这里插入图片描述

2) 在Cloudera Manager中,单击Clusters->Hive(Hive Metastore服务)->Configuration,并将hive.metastore.warehouse.dir属性值更改为新Hive仓库目录的路径

3) 单击Hive->Hive->操作菜单->创建Hive仓库外部目录

4)hive.metastore.warehouse.external.dir属性值更改为Hive仓库外部目录的路径

5) 配置Ranger Hadoop SQL策略,访问对象存储(如S3、Ozone)或文件系统(如HDFS)上的目录URL

6、使用点表示法引用表


Hive3.1使用点表示法对表引用的更改可能需要对Hive脚本进行更改

CDP中的Hive3.1包括SQL兼容性 (Hive-16907),它拒绝db.tableSQL查询。表名中不允许使用.点。要在表名中引用数据库和表,请将两者括在反引号中,如下所示:

`db`.`table`

7、理解CREATE TABLE行为


Hive表的创建自Hive3以来发生了重大变化,以提高可用性和功能。如果要从CDH或HDP升级,则必须了解影响遗留表创建行为的更改

Hive通过以下方式改变了表的创建:

  • 创建ACID兼容的表,这是CDP中的默认值
  • 支持简单的写入和插入
  • 写入多个分区
  • 在单个SELECT语句中插入多个数据更新
  • 消除了对桶的需要

如果你有一个ETL管道在Hive中创建表,那么这些表将被创建为ACID。Hive现在严格控制访问,并定期对表执行压缩。使用兼容ACID的事务表不会导致性能或操作过载。从Spark和其他客户端访问托管Hive表的方式发生了变化。在CDP中,访问外部表需要设置安全访问权限

您必须了解传统平台(如CDH或HDP)中CREATE TABLE语句的行为,以及升级到CDP(Cloudera Data Platform)后这些行为的变化

  • 在升级到CDP之前

    • 在CDH5、CDH6和HDP2中,默认情况下,CREATE TABLE以纯文本格式创建一个非ACID管理的表
    • 在HDP3和CDP 7.1.0到7.1.7,默认情况下,CREATE TABLE可以创建ORC格式的完整ACID事务表,也可以为所有其他表格式创建仅插入的ACID事务表
  • 升级到CDP后

    • 如果您从HDP2、CDH5或CDH6升级到CDP 7.1.0-7.1.8,默认情况下CREATE TABLE创建ORC格式的完整ACID事务表,或者为所有其他表格式创建仅插入的ACID事务表
    • 如果您正在从HDP3或CDP 7.1.0升级到7.1.7-7.1.8,现有的行为仍然存在,CREATE TABLE创建ORC格式的完整ACID事务表,或者为所有其他表格式创建仅插入的ACID事务表

既然已经理解了CREATE TABLE语句的行为,就可以通过配置某些属性来选择修改默认的表行为。配置的优先顺序如下(修改默认的CREATE TABLE行为):

1)创建表时覆盖默认行为

无论数据库、会话或站点级别的设置如何,您都可以通过在CREATE table语句中使用MANAGED或EXTERNAL关键字来覆盖默认的表行为

CREATE [MANAGED][EXTERNAL] TABLE foo (id INT);

2)在数据库级别设置默认表类型

您可以使用数据库属性defaultTableType=EXTERNAL或ACID来指定要使用CREATE table语句创建的默认表类型。可以在创建数据库时指定该属性,也可以在稍后使用ALTER DATABASE语句指定该属性。例如:

CREATE DATABASE test_db WITH DBPROPERTIES ('defaultTableType'='EXTERNAL');

在本例中,使用CREATE TABLE语句在test_db数据库下创建的表将创建启用了清除功能的外部表(external.table.purge = 'true'

您还可以选择将数据库配置为只允许创建外部表,而不允许创建ACID表。在创建数据库时,您可以设置数据库属性EXTERNAL_TABLES_ONLY=true,以确保仅在数据库中创建外部表。例如:

CREATE DATABASE test_db WITH DBPROPERTIES ('EXTERNAL_TABLES_ONLY'='true');

3)在会话级别设置默认的表类型

通过将hive.create.as.external.legacy设置为true或false,可以在现有的直线会话中配置CREATE TABLE行为。将该值设置为true将导致CREATE TABLE语句默认创建外部表。

当会话结束时,默认的CREATE TABLE行为也会结束。

4)在站点级别设置默认表类型

通过在Hive配置下的Cloudera Manager中配置Hive . CREATE .as.insert.only和Hive . CREATE .as.acid属性,可以在站点级配置CREATE TABLE行为。在站点级别配置时,该行为在会话之间持续存在。有关更多信息,请参见配置CREATE TABLE行为。

如果您是Spark用户,那么切换到遗留行为是不必要的。例如,在SparkSQL中调用“create table”,会在升级到Cloudera数据平台后创建一个外部表,就像升级之前一样。您可以使用Hive Warehouse Connector (HWC)连接Hive,从Spark读取Hive ACID表。要从Spark向Hive写入ACID表,可以使用HWC和HWC API。当你不使用HWC API时,Spark会创建一个带有purge属性的外部表。更多信息请参见Hive Warehouse Connector访问Spark数据

官方文档:https://docs.cloudera.com/cdp-private-cloud-base/latest/using-hiveql/topics/cdp-data-migration-table-create.html

未完待续…



参考文章:https://developer.aliyun.com/article/786518


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/68899.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenEuler学习笔记(九):安装 OpenEuler后配置和优化

安装OpenEuler后,可以从系统基础设置、网络配置、性能优化等方面进行配置和优化,以下是具体内容: 系统基础设置 更新系统:以root用户登录系统后,在终端中执行sudo yum update命令,对系统进行更新&#x…

Vue | 搭建第一个Vue项目(安装node,vue-cli)

一.环境搭建: 1.安装node: 进入网站,下载对应版本的node.js Index of /dist/ (nodejs.org) 我这里下载的是: 解压到对应的目录下: 并新建两个文件夹node_cache和node_global: 2.配置环境: …

日历热力图,月度数据可视化图表(日活跃图、格子图)vue组件

日历热力图,月度数据可视化图表,vue组件 先看效果👇 在线体验https://www.guetzjb.cn/calanderViewGraph/ 日历图简单划分为近一年时间,开始时间是 上一年的今天,例如2024/01/01 —— 2025/01/01,跨度刚…

2024年第十五届蓝桥杯青少组国赛(c++)真题—快速分解质因数

快速分解质因数 完整题目和在线测评可点击下方链接前往: 快速分解质因数_C_少儿编程题库学习中心-嗨信奥https://www.hixinao.com/tiku/cpp/show-3781.htmlhttps://www.hixinao.com/tiku/cpp/show-3781.html 若如其他赛事真题可自行前往题库中心查找,题…

[Computer Vision]实验三:图像拼接

目录 一、实验内容 二、实验过程及结果 2.1 单应性变换 2.2 RANSAC算法 三、实验小结 一、实验内容 理解单应性变换中各种变换的原理(自由度),并实现图像平移、旋转、仿射变换等操作,输出对应的单应性矩阵。利用RANSAC算法优…

FPGA自分频产生的时钟如何使用?

对于频率比较小的时钟,使用clocking wizard IP往往不能产生,此时就需要我们使用代码进行自分频,自分频产生的时钟首先应该经过BUFG处理,然后还需要进行时钟约束,处理之后才能使用。

【喜讯】海云安荣获“数字安全产业贡献奖”

近日,国内领先的数字化领域独立第三方调研咨询机构数世咨询主办的“2025数字安全市场年度大会”在北京成功举办。在此次大会上,海云安的高敏捷信创白盒产品凭借其在AI大模型技术方面的卓越贡献和突出的技术创新能力,荣获了“数字安全产业贡献…

ceph基本概念,架构,部署(一)

一、分布式存储概述 1.存储分类 存储分为封闭系统的存储和开放系统的存储,而对于开放系统的存储又被分为内置存储和外挂存储。 外挂存储又被细分为直连式存储(DAS)和网络存储(FAS),而网络存储又被细分网络接入存储(NAS)和存储区域网络(SAN)等。 DAS(D…

Markdown Viewer 浏览器, vscode

使用VS Code插件打造完美的MarkDown编辑器(插件安装、插件配置、markdown语法)_vscode markdown-CSDN博客 右键 .md 文件,选择打开 方式 (安装一些markdown的插件) vscode如何预览markdown文件 | Fromidea GitCode - 全球开发者…

wx036基于springboot+vue+uniapp的校园快递平台小程序

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…

AIGC的企业级解决方案架构及成本效益分析

AIGC的企业级解决方案架构及成本效益分析 一,企业级解决方案架构 AIGC(人工智能生成内容)的企业级解决方案架构是一个多层次、多维度的复杂系统,旨在帮助企业实现智能化转型和业务创新。以下是总结的企业级AIGC解决方案架构的主要组成部分: 1. 技术架构 企业级AIGC解决方…

LeetCode 热题 100_全排列(55_46_中等_C++)(递归(回溯))

LeetCode 热题 100_两数之和(55_46) 题目描述:输入输出样例:题解:解题思路:思路一(递归(回溯)): 代码实现代码实现(思路一&#xff08…

2025发文新方向:AI+量化 人工智能与金融完美融合!

2025深度学习发论文&模型涨点之——AI量化 人工智能的融入,使量化交易实现了质的突破。借助机器学习、深度学习等先进技术,人工智能可高效处理并剖析海量市场数据,挖掘出数据背后错综复杂的模式与趋势,从而不仅提升了数据分析…

3.CSS的背景

通过CSS背景属性,可以给页面元素添加背景样式。 背景属性可以设置背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等。 3.1 背景颜色 background-color属性定义了元素的背景颜色 background-color:颜色值; 一般情况下元素背景颜色默认值…

AIGC视频生成模型:Stability AI的SVD(Stable Video Diffusion)模型

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍Stability AI的视频生成模型SVD(Stable Video Diffusion)模型,这家公司在图像生成领域富有盛名,开发并维护了知名开源项目SD系列…

【若依】添加数据字典

接下来,在生成代码的页面将“学科”字段改为下拉框,然后选择数据字典 然后,将生成的代码中的index文件复制到vue3的index中,替换掉之前的index文件 修改数据库中的subject的值,这样就可以通过数据字典来查询 以上操作成…

基于quartz,刷新定时器的cron表达式

文章目录 前言基于quartz,刷新定时器的cron表达式1. 先看一下测试效果2. 实现代码 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&…

MySQL中的关联查询:方式、区别及示例

MySQL中的关联查询:方式、区别及示例 在数据库操作中,我们常常需要从多个相关的表中获取数据,这就用到了关联查询。MySQL提供了多种关联查询方式,每种方式都有其特点和适用场景。下面我们就来详细探讨这些关联查询的使用方式、它…

软件卸载不干净?用“它”一键卸载!

前言: 今天我要向大家推荐一款适用于Windows系统的卸载工具,它是一款完全免费且开源的软件,使用体验极佳,绝对值得大家一试。 Bulk Crap Uninstalle 这款名为Bulk Crap Uninstaller的软件,相较于系统自带的卸载工具…

使用AI生成金融时间序列数据:解决股市场的数据稀缺问题并提升信噪比

“GENERATIVE MODELS FOR FINANCIAL TIME SERIES DATA: ENHANCING SIGNAL-TO-NOISE RATIO AND ADDRESSING DATA SCARCITY IN A-SHARE MARKET” 论文地址:https://arxiv.org/pdf/2501.00063 摘要 金融领域面临的数据稀缺与低信噪比问题,限制了深度学习在…