上图是一个典型的使用 Databend 加速 Hive 查询的架构。用户使用 trino 、Spark 等引擎将数据纳入 Hive 进行管理,数据的存放位置则位于 S3 、GCS 、HDFS 等存储服务之中。引入 Databend 可以带来更好的查询性能。
和 trino 以及大多数支持 Hive Catalog / Connector 的查询引擎一样,Databend 可以复用 Hive 除了运行时(查询引擎)之外的其他组件,包括用于管理文件和底层存储的存储服务和管理 SQL 表到文件和目录映射的 Hive MetaStore 。
的格式指定到表。
SELECT * FROM ..;
通过这种形式,用户无需向 Databend 中导入数据,就可以直接查询位于 Hive/Iceberg Catalog 中的数据,并获得 Databend 的性能保证。
Workshop :使用 Databend 加速 Hive 查询
接下来,让我们通过两个例子,了解 Databend 是如何加速不同存储服务下的 Hive 查询的。
使用 HDFS 存储
Hive + HDFS 的实验环境可以使用 github.com/PsiACE/data… 中的环境搭建
docker-compose up -d
接下来,让我们一起准备数据:
- 进入 hive-server ,使用 beeline 连接:
docker-compose exec hive-server bash
beeline -u jdbc:hive2://localhost:10000
- 创建数据库、表和数据,注意,需要以 Parquet 格式存储:
CREATE DATABASE IF NOT EXISTS abhighdb;
USE abhighdb;
CREATE TABLE IF NOT EXISTS alumni(
alumni_id int,
first_name string,
middle_name string,
last_name string,
passing_year int,
email_address string,
phone_number string,
city string,
state_code string,
country_code string
)
STORED AS PARQUET;
INSERT INTO abhighdb.alumni VALUES
(1,"Rakesh","Rahul","Pingle",1994,"rpingle@nps.gov",9845357643,"Dhule","MH","IN"),
(2,"Abhiram","Vijay","Singh",1994,"asingh@howstuffworks.com",9987654354,"Chalisgaon","MH","IN"),
(3,"Dhriti","Anay","Rokade",1996,"drokade@theguardian.com",9087654325,"Nagardeola","MH","IN"),
(4,"Vimal","","Prasad",1995,"vprasad@cmu.edu",9876574646,"Kalwadi","MH","IN"),
(5,"Kabir","Amitesh","Shirode",1996,"kshirode@google.co.jp",9708564367,"Malegaon","MH","IN"),
(6,"Rajesh","Sohan","Reddy",1994,"rreddy@nytimes.com",8908765784,"Koppal","KA","IN"),
(7,"Swapnil","","Kumar",1994,"skumar@apache.org",8790654378,"Gurugram","HR","IN"),
(8,"Rajesh","","Shimpi",1994,"rshimpi@ucoz.ru",7908654765,"Pachora","MH","IN"),
(9,"Rakesh","Lokesh","Prasad",1993,"rprasad@facebook.com",9807564775,"Hubali","KA","IN"),
(10,"Sangam","","Mishra",1994,"smishra@facebook.com",9806564775,"Hubali","KA","IN"),
(11,"Sambhram","Akash","Attota",1994,"sattota@uol.com.br",7890678965,"Nagpur","MH","IN");
SELECT * FROM abhighdb.alumni;

由于 HDFS 支持需要使用 libjvm.so 和 Hadoop 的若干 Jar 包,请确保你安装了正确的 JDK 环境并配置相关的环境变量:
export JAVA_HOME=/path/to/java
export LD_LIBRARY_PATH=${JAVA_HOME}/lib/server:${LD_LIBRARY_PATH}
export HADOOP_HOME=/path/to/hadoop
export CLASSPATH=/all/hadoop/jar/files
参考 Deploying a Standalone Databend ,使用带有 HDFS 特性的 Databend 分发(databend-hdfs-*),部署一个单节点的 Databend 实例。

通过 BendSQL 连接这个 Databend 实例,然后创建对应的 Hive Catalog ,记得要通过 CONNECTION 字段为其配置对应的存储后端:
CREATE CATALOG hive_hdfs_ctl TYPE = HIVE CONNECTION =(
METASTORE_ADDRESS = '127.0.0.1:9083'
URL = 'hdfs:///'
NAME_NODE = 'hdfs://localhost:8020'
);
在上面的语句中,我们创建了一个底层存储使用 HDFS 的 Hive Catalog:
让我们尝试运行一个简单的 SELECT 查询,验证其是否能够正常工作:
SELECT * FROM hive_hdfs_ctl.abhighdb.alumni;

使用 S3-like 对象存储
Trino + Hive + MinIO 的实验环境可以使用 github.com/sensei23/tr… 进行搭建。
cd docker-compose
docker build -t my-hive-metastore .
docker-compose up -d
在执行完 docker-compose up -d 等前置步骤后,先进入 MinIO 控制面板,创建一个名为 tpch 的 Bucket 。

运行下述命令可以打开 trino 命令行工具:
docker container exec -it docker-compose-trino-coordinator-1 trino
接着创建一个小型的 TPCH 客户表。注意,为了满足 Databend 使用要求,这里需要使用 Parquet 格式:
CREATE SCHEMA minio.tpch
WITH (location = 's3a://tpch/');
CREATE TABLE minio.tpch.customer
WITH (
format = 'PARQUET',
external_location = 's3a://tpch/customer/'
)
AS SELECT * FROM tpch.tiny.customer;

查询对应的 Hive 元数据,可以看到像下面这样的信息:
DB_ID | DB_LOCATION_URI | NAME | OWNER_NAME | OWNER_TYPE | CTLG_NAME
-------+---------------------------+----------+------------+------------+-----------
1 | file:/user/hive/warehouse | default | public | ROLE | hive
3 | s3a://tpch/ | tpch | trino | USER | hive
参考 Deploying a Standalone Databend 部署一个单节点的 Databend 实例。

通过 BendSQL 连接这个 Databend 实例,然后创建对应的 Hive Catalog ,记得要通过 CONNECTION 字段为其配置对应的存储后端:
CREATE CATALOG hive_minio_ctl
TYPE = HIVE
CONNECTION =(
METASTORE_ADDRESS = '127.0.0.1:9083'
URL = 's3://tpch/'
AWS_KEY_ID = 'minio'
AWS_SECRET_KEY = 'minio123'
ENDPOINT_URL = 'http://localhost:9000'
);
在上面的语句中,我们创建了一个底层存储使用 MinIO 的 Hive Catalog:
让我们尝试运行一个简单的 SELECT 查询,验证其是否能够正常工作:
SELECT * FROM hive_minio_ctl.tpch.customer LIMIT 5;

提示
- 要使用 SQL 语句创建带有多种存储支持的 Hive Catalog,推荐使用 v1.2.100-nightly 及以后版本。
- 不再需要从 toml 文件进行配置就可以获得多源数据目录能力。
- 如果需要获取 HDFS 存储服务支持,则需要部署或者编译带有 HDFS 特性的 Databend ,比如 databend-hdfs-v1.2.100-nightly-x86_64-unknown-linux-gnu.tar.gz 。
- 对于 Hive Catalog ,Databend 目前只支持查询 Parquet 格式的数据,且只支持 SELECT,不支持其他 DDL 、DML 和 UDFs 。
- Databend 的语法与 Hive 并不完全兼容,关于 SQL 兼容性相关的内容,可以查看 Docs | SQL Conformance 。
相关推荐
当我们使用win7操作系统时,有时计算机可能会出现一些问题,我们需要更换它的主板。所以对于win7主板更换后出现蓝屏的问题,以及如何在不重新安装系统的情况下解决这个问题,小编认为我们可以做相关的设置,然后通过电脑的第三方软件来解决。让我们看看具体的操作步骤~ win7换主板蓝屏不用重装系统怎么解决方法一: 1.首先我们要更改电脑硬盘模式。XP的话需要在新主板BIOS里设置好硬盘的引导模
win10用户中有不少人喜欢去搞个性化,专门去找自己喜欢的壁纸去设置桌面背景,但是使用一段时候后喜新厌旧又替换了起来,久而久之会留下大量记录,那么要如何删除自定义背景图片的历史记录呢?其实方法很简单,下面小编就跟大家分享一下Win10系统如何删除自定义图片历史记录的方法。 详细如下 1、首先我们鼠标右键桌面空白处,选择个性化选项。 2、我们进入到个性化页面中,点击背景选项,并在右侧处点
一般在系统安装的时候都是默认没有开机密码的,但是如果我们设置后,就可能会遇到win11怎么都去不掉开机密码的问题,这时候可以尝试用命令代码来去掉密码。 win11怎么都去不掉开机密码: 1、首先同时按下键盘“win+r”打开运行,如图所示。 2、打开后,在运行中输入“cmd”并按下确定。 3、打开cmd后,输入“net users administrator ”(注意有空格的) 4、最后按下回车
最近,一个小伙伴回应说,当电脑玩反水寒时,win10系统崩溃,无法启动并进入系统进行修复。我该怎么办?我该怎么修理呢?事实上,我们可以下载新的系统并使用u盘进行安装。今天,边肖带来了详细的解决方案。让我们看看。 玩逆水寒win10系统崩溃的解决方法 1、 桌面上右键【此电脑】,在弹出菜单中选择【属性】选项。 如果您的桌面没有【此电脑】,您可以使用Windows键+Break键的组合
Excel怎么设置关键字排序?Excel是我们经常会使用到的办公软件,在日常办公时我们可以根据数据内容进行自动整理排序,但是想要根据自己的需求设置关键字排序,这该怎么操作呢?下面一起来看看详细操作教程吧。 教程如下: 1、打开界面后,点击左上角文件菜单,打开需要处理的表格数据。 2、随后在开始菜单的排序和筛选栏目中,点击自定义排序选项。 3、最后根据自己的排序需求,点击添加条件
回到顶部