Flink-StarRocks详解:第五部分查询数据湖(第55天)

news2024/9/21 4:38:27

系列文章目录

4.查询数据湖
4.1 Catalog
4.1.1 概述
4.1.1.1 基本概念
4.1.1.2 Catalog
4.1.1.3 访问Catalog
4.1.2 Default catalog
4.1.3 External Catalog
4.2 文件外部表
4.2.1 使用限制
4.2.2 开源版本语法
4.2.3 阿里云版本
5. 查询及优化

文章目录

  • 系列文章目录
  • 前言
  • 4.查询数据湖
    • 4.1 Catalog
    • 4.1.1 概述
        • 4.1.1.1 基本概念
        • 4.1.1.2 Catalog
        • 4.1.1.3 访问Catalog
      • 4.1.2 Default catalog
      • 4.1.3 External Catalog
    • 4.2 文件外部表
      • 4.2.1 使用限制
      • 4.2.2 开源版本语法
      • 4.2.3 阿里云版本
  • 5. 查询及优化


前言

本文为Flink-StarRocks详解后续章节:主要详解StarRocks查询数据湖
由于篇幅过长,后续接着下面进行详解:
数仓场景:即席查询大案例

4.查询数据湖

4.1 Catalog

4.1.1 概述

StarRocks 自 2.3 版本起支持 Catalog(数据目录)功能,实现在一套系统内同时维护内、外部数据,方便轻松访问并查询存储在各类外部源的数据。

4.1.1.1 基本概念

内部数据:指保存在 StarRocks 中的数据。
外部数据:指保存在外部数据源(如 Apache Hive™、Apache Iceberg、Apache Hudi、Delta Lake、JDBC)中的数据。

4.1.1.2 Catalog

当前 StarRocks 提供两种类型 Catalog:internal catalog 和 external catalog。
在这里插入图片描述

 Internal catalog: 内部数据目录,用于管理 StarRocks 所有内部数据。例如,执行 CREATE DATABASE 和 CREATE TABLE 语句创建的数据库和数据表都由 internal catalog 管理。 每个 StarRocks 集群都有且只有一个 internal catalog 名为 default_catalog。
 External catalog: 外部数据目录,用于连接外部 metastore。在 StarRocks 中,可以通过 external catalog 直接查询外部数据,无需进行数据导入或迁移。当前支持创建以下类型的 external catalog:
 Hive catalog:用于查询 Hive 数据。
 Iceberg catalog:用于查询 Iceberg 数据。
 Hudi catalog:用于查询 Hudi 数据。
 Delta Lake catalog:用于查询 Delta Lake 数据。
 JDBC catalog:用于查询 JDBC 数据源的数据。

4.1.1.3 访问Catalog

可以使用 SET CATALOG 切换当前会话里生效的 Catalog,然后通过该 Catalog 查询数据。
语法:

SET CATALOG <catalog_name>

参数:
catalog_name:当前会话里生效的 Catalog,支持 Internal Catalog 和 External Catalog。如果指定的 Catalog 不存在,则会引发异常。
示例:
通过如下命令,切换当前会话里生效的 Catalog 为 Hive Catalog hive_metastore:

SET CATALOG hive_metastore;

如想在一个 catalog 中查询其他 catalog 中数据,可通过 catalog_name.db_name.table_name 的格式来引用目标数据。
例如,在 default_catalog.olap_db 下查询 hive_catalog 中的 hive_table。

SELECT * FROM hive_catalog.hive_db.hive_table;

4.1.2 Default catalog

StarRocks 2.3 及以上版本提供了 Internal Catalog(内部数据目录),用于管理 StarRocks 的内部数据。每个 StarRocks 集群都有且只有一个 Internal Catalog,名为 default_catalog。StarRocks 暂不支持修改 Internal Catalog 的名称,也不支持创建新的 Internal Catalog。
使用:
默认是default_catalog,也可以显示切换。

SET CATALOG default_catalog;

然后通过 SELECT 查询内部数据

SELECT * FROM <table_name>;

如在以上步骤中未指定数据库,则可以在查询语句中直接指定。

SELECT * FROM <db_name>.<table_name>;
或
SELECT * FROM default_catalog.<db_name>.<table_name>;

4.1.3 External Catalog

External Catalog(外部数据目录),用于管理外部数据源的访问信息。
语法:

CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
  "type" = "<type>",
  MetastoreParams
)

参数说明:
 catalog_name:External Catalog的名称,必选参数。
命名要求如下:
 总长度不能超过64个字符。
 必须由字母(az或AZ)、数字(0~9)或下划线(_)组成,且只能以字母开头。
comment:External Catalog的描述,可选参数。
type:数据源的类型,必选参数。
目前开源版本支持hive、hudi、iceberg、delta lake、jdbc、elasticsearch、paimon七种类型的数据源,阿里云EMR Serverless StarRocks目前只支持hive、hudi、iceberg三种。
MetastoreParams:StarRocks访问相应数据源的相关参数配置
示例:
开源版本:

CREATE EXTERNAL CATALOG hive_catalog_hms
PROPERTIES
(
    "type" = "hive",
    "hive.metastore.type" = "hive",
    "hive.metastore.uris" = "thrift://xx.xx.xx:9083"
);

阿里云版本:

CREATE EXTERNAL CATALOG hive
PROPERTIES 
(
    "type" = "hive",
    "dlf.catalog.endpoint" = "dlf-vpc.cn-beijing.aliyuncs.com",
    "dlf.catalog.region" = "cn-beijing",
    "dlf.catalog.proxyMode" = "DLF_ONLY",
    "dlf.catalog.akMode" = "MANUAL",
    "hive.metastore.type" = "DLF",
    "dlf.catalog.id" = "dlf_test",
    "dlf.catalog.accessKeyId" = "*******",
    "dlf.catalog.accessKeySecret" = "*****"
);

4.2 文件外部表

文件外部表 (File External Table) 是一种特殊的外部表。可以通过文件外部表直接查询外部存储系统上的 Parquet 和 ORC 格式的数据文件,无需导入数据。同时,文件外部表也不依赖任何 Metastore。StarRocks 当前支持的外部存储系统包括 HDFS、Amazon S3 及其他兼容 S3 协议的对象存储、阿里云对象存储 OSS 和腾讯云对象存储 COS。
该特性从 StarRocks 2.5 版本开始支持。

4.2.1 使用限制

 当前仅支持在 default_catalog 下的数据库内创建文件外部表,不支持 external catalog。可以通过 SHOW CATALOGS 来查询集群下的 catalog。
 仅支持查询 Parquet 和 ORC 格式的数据文件。
 目前仅支持读取目标数据文件中的数据,不支持例如 INSERT,DELETE,DROP 等写入操作。

4.2.2 开源版本语法

切换到目前数据库后,可以使用如下语法创建一个文件外部表。

CREATE EXTERNAL TABLE <table_name> 
(
    <col_name> <col_type> [NULL | NOT NULL] [COMMENT "<comment>"]
) 
ENGINE=FILE
COMMENT ["comment"]
PROPERTIES
(
    FileLayoutParams,
    StorageCredentialParams
)

参数说明:
参数 必选 说明
在这里插入图片描述

在这里插入图片描述

具体参考:https://docs.starrocks.io/zh/docs/data_source/file_external_table/

示例:

USE db_example;
CREATE EXTERNAL TABLE table_1
(
    name string, 
    id int
) 
ENGINE=file
PROPERTIES 
(
    "path" = "s3://bucket-test/folder1/", 
    "format" = "orc",
    "aws.s3.use_instance_profile" = "false",
    "aws.s3.access_key" = "<iam_user_access_key>",
    "aws.s3.secret_key" = "<iam_user_access_key>",
    "aws.s3.region" = "us-west-2" 
);

4.2.3 阿里云版本

在阿里云EMR Serverless StarRocks中,通过配置正确的OSS AccessKey和OSS Endpiont信息,即可以轻松地连接到OSS Bucket,并在StarRocks中使用SQL语句对数据进行查询和分析等操作。

操作步骤:
(1)进入EMR Serverless StarRocks实例配置页面。
1)在EMR控制台,点击StarRocks,单击待查看的实例名称。
在这里插入图片描述

2)单击实例配置页签。

(2)修改core-site.xml配置。
1)单击core-site.xml页签。
2)搜索并修改以下配置项。
在这里插入图片描述

①配置accessKey步骤:
登录AccessKey管理页面,

https://ram.console.aliyun.com/manage/ak?spm=a2c4g.11186623.0.0.389247f8OlOaMw 

首次进入需勾选并点击确定
在这里插入图片描述

因为安全原因,这里使用子用户的AccessKey
在这里插入图片描述

点击创建用户
在这里插入图片描述

登录名为写自己得,显示名称为自己的名称,勾选两种访问方式
点击自定义密码,设置为88888666!
然后是不需要重置密码,不需要MFA多因素认证
点击确定
然后通过手机号或者扫脸进行验证。
验证成功后,复制对应的AccessKey ID 和 Secret
在这里插入图片描述

②通过查询访问域名和数据中心

 https://help.aliyun.com/zh/oss/user-guide/regions-and-endpoints 得到 北京的内网Endpoint为 oss-cn-beijing-internal.aliyuncs.com

(3)修改BE配置。
1)单击BE页签。
2)搜索并修改以下配置项。
在这里插入图片描述
在这里插入图片描述

(4)生效配置。
1)单击提交参数。
2)在弹出的对话框中,输入原因说明,单击确定。
(5)查询示例
接paimon章节在oss中创建的表

CREATE DATABASE test;

CREATE EXTERNAL TABLE test.UpdateTable
(
 a STRING,
 b INT,
 c INT
) 
ENGINE=file
PROPERTIES 
(
    "path" = "oss://*******-paimon/test.db/UpdateTable/bucket-0/", 
    "format" = "orc"
);

SELECT * FROM test.UpdateTable;

查询结果如下:
在这里插入图片描述

注意:如果查询报错,原因可能是子账号没有OSS访问权限,所以需要给子账号开通权限
在这里插入图片描述

开通方式,就是在RAM访问控制中,点击用户,然后添加权限。
在这里插入图片描述

然后把OSS权限授权给子用户。
在这里插入图片描述

5. 查询及优化

查询SQL参考:

https://docs.starrocks.io/zh/docs/sql-reference/sql-statements/all-commands/

常用函数参考:

https://docs.starrocks.io/zh/docs/sql-reference/sql-functions/function-list/

另外,为了获取更快的查询速度,StarRocks也提供了一些查询加速的方法,主要的方式有使用CBO 优化器、物化视图、Colocata Join、索引、数据去重等。
具体详见:

https://docs.starrocks.io/zh/docs/using_starrocks/Cost_based_optimizer/

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

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

相关文章

Java(十一)——内部类、成员内部类、静态内部类、局部内部类、匿名内部类

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…

操作系统原理:程序、进程、线程的概念

文章目录 程序、进程、线程的概念程序&#xff08;Program&#xff09;进程&#xff08;Process&#xff09;线程&#xff08;Thread&#xff09;关系总结 在日常对操作系统的使用中&#xff0c;大家肯定对程序、进程和线程多少有所耳闻。作为操作系统的重要一部分&#xff0c;…

ROM修改进阶教程------修改自己适配的rom固件 禁止第三方修改 删除自定文件或app后自动重启的步骤解析

很多适配第三方系统的资深作者。都会在rom中加入一些防止他人任意修改的脚本。这种操作主要避免盗包的行为。而且前期有在rom中加入联网锁定id格式化分区的恶意操作。今天主要解析一种删除自带文件后重启手机后会反复重启的脚本步骤。 通过博文步骤可以初步了解; 1----了解删…

CAPL代码中判断网络是CAN还是CANFD

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…

ardupilot开发 --- 网络技术综述 篇

不信人间有白头 一些概念参考文献 一些概念 以太网、局域网、互联网 以太网(Ethernet)&#xff0c;是一种计算机局域网技术。以太网是一种有线网络技术&#xff0c;网络传输介质包括&#xff1a;以太网电缆&#xff0c;如常见的双绞线、光纤等。根据传输速度&#xff0c;可以氛…

2024107读书笔记|《火车快开(李娟诗集)》——我轰然经过你的生命,又悄然退却,你从不曾爱过我,你只爱我在你的生命中坠落

《火车快开&#xff08;李娟诗集&#xff09;》—— 文前第一部分 荒野碎片第二部分 弯路第三部分 告别 《火车快开&#xff08;李娟诗集&#xff09;》作者李娟&#xff0c;看的她的第一本书是《记一忘二三》&#xff0c;前段时间《我的阿勒泰》超级火&#xff0c;但我终于还是…

Codeforces Round 962 (Div. 3) A~F

A.Legs&#xff08;贪心&#xff09; 题意&#xff1a; 农夫约翰的农场又迎来了美好的一天。 农夫约翰来到农场后&#xff0c;数了数共 n n n条腿。众所周知&#xff0c;农场里只住着鸡和牛&#xff0c;一只鸡有 2 2 2条腿&#xff0c;而一头牛有 4 4 4条腿。 假设约翰农场…

Shell编程 --基础语法(1)

文章目录 Shell编程基础语法变量定义变量使用变量命令的使用只读变量删除变量 传递参数字符串获取字符串长度字符串截取 数组定义方式关联数组获取数组的长度 总结 Shell编程 Shell是一种程序设计语言。作为命令语言&#xff0c;它交互式解释和执行用户输入的命令或者自动地解…

数论——裴蜀定理、欧几里得算法、扩展欧几里得算法、逆元以及求解

裴蜀定理 若整数 a、b 互质&#xff08;最大公约数为 1&#xff09;&#xff0c;则存在整数 x、y &#xff0c;使得 ax by 1 。 更一般的情况是&#xff1a;设 a、b 是不全为零的整数&#xff0c;则存在整数 x、y &#xff0c;使得 ax by gcd(a, b) &#xff0c;其中 gcd…

第十一章:Kubernetes API服务器的安全防护

本章内容包括&#xff1a; 了解认证机制ServiceAccounts是什么及使用的原因了解基于角色(RBAC)的权限控制插件使用角色和角色绑定使用集群角色和集群角色绑定了解默认角色及其绑定 1 了解认证机制 在前面的内容中&#xff0c;我们说到API服务器可以配置一个到多个认证的插件(授…

等保2.0 | 人大金仓数据库测评

人大金仓数据库&#xff0c;全称为金仓数据库管理系统KingbaseES&#xff08;简称&#xff1a;金仓数据库或KingbaseES&#xff09;&#xff0c;是北京人大金仓信息技术股份有限公司自主研制开发的具有自主知识产权的通用关系型数据库管理系统。以下是关于人大金仓数据库的详细…

室内养宠空气净化器哪家好?热门室内养宠空气净化器用户体验

自从家里有了4只英短后&#xff0c;一到季节我就得不停的拖地刷床&#xff0c;除了这些可以手动清理的猫毛之外&#xff0c;那么空气中的猫毛怎么办&#xff1f;真的不建议养猫&#xff0c;除非你能接受空气中飞舞着浮毛&#xff0c;衣服、床、筷子、鼻子里全都是猫毛&#xff…

STM32——外部中断(EXTI)

目录 前言 一、外部中断基础知识 二、使用步骤 三、固件库实现 四、STM32CubeMX实现 总结 前言 外部中断&#xff08;External Interrupt&#xff0c;简称EXTI&#xff09;是微控制器用于响应外部事件的一种方式&#xff0c;当外部事件发生时&#xff08;如按键按下、传感器信号…

NC 合并区间

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 给出一组区间…

推流直播服务

pc端建立NVR服务器&#xff0c;并实现NVR功能&#xff0c;具有推流功能&#xff0c;推送给OBS&#xff0c;可以对接到抖音、快手等平台&#xff0c;实现实时直播&#xff0c;应用于无人值守&#xff0c;养殖、农场、旅游等场景 运行MediaServer和webserver 服务端口配置在confi…

C# 使用 NLog 输出日志到文件夹

在项目中使用 NuGet 安装 NLog 包以及 NLog.Config 包 配置 nlog.config 在项目的根目录下创建一个 Nlog.config 文件&#xff08;如果还没有&#xff09;&#xff0c;然后添加如下配置&#xff1a; <?xml version"1.0" encoding"utf-8" ?> <…

leetcode数论(​3044. 出现频率最高的质数)

前言 经过前期的基础训练以及部分实战练习&#xff0c;粗略掌握了各种题型的解题思路。现阶段开始专项练习。 描述 给你一个大小为 m x n 、下标从 0 开始的二维矩阵 mat 。在每个单元格&#xff0c;你可以按以下方式生成数字&#xff1a; 最多有 8 条路径可以选择&#xff1…

17 字符函数、字符串函数和内存函数

目录 一、字符函数 &#xff08;一&#xff09;字符分类函数 &#xff08;二&#xff09;字符转换函数 二、字符串函数 &#xff08;一&#xff09;strlen、strcpy、strcat、strcmp的使用和模拟实现 1、strlen &#xff08;1&#xff09;使用 &#xff08;2&#xff09;…

Java中的5种线程池类型

Java中的5种线程池类型 1. CachedThreadPool &#xff08;有缓冲的线程池&#xff09;2. FixedThreadPool &#xff08;固定大小的线程池&#xff09;3. ScheduledThreadPool&#xff08;计划线程池&#xff09;4. SingleThreadExecutor &#xff08;单线程线程池&#xff09;…

基于切片法计算点云体积 双向最近点三维点排序

具体内容源代码&#xff1a;基于切片法计算点云体积 双向最近点三维点排序 效果 主要方法&#xff1a; 点云切片&#xff08;基于一定厚度度的点云切片投影&#xff09; &#xff1b;切片后的点云分割 &#xff1b;边缘点排序【双向最近邻】&#xff08;可以进行多边形拟合计…