;
通过这种形式,用户无需向 Databend 中导入数据,就可以直接查询位于 Hive/Iceberg Catalog 中的数据,并获得 Databend 的性能保证。
Workshop :使用 Databend 加速 Hive 查询
接下来,让我们通过两个例子,了解 Databend 是如何加速不同存储服务下的 Hive 查询的。
使用 HDFS 存储
Hive + HDFS 的实验环境可以使用 https://github.com/PsiACE/databend-workshop/tree/main/hive-hdfs 中的环境搭建
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;
![](http://e1idc.net/wp-content/uploads/2023/09/frc-88b02bf0b0b2ce41ed3947cb1b311484.png)
由于 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 实例。
![](http://e1idc.net/wp-content/uploads/2023/09/frc-382ce312607203be647f70d1d3c65a0e.png)
通过 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;
![](http://e1idc.net/wp-content/uploads/2023/09/frc-0c16ad73cb1678e6a98ecca28f0f6d01.png)
使用 S3-like 对象存储
Trino + Hive + MinIO 的实验环境可以使用 https://github.com/sensei23/trino-hive-docker/ 进行搭建。
cd docker-compose
docker build -t my-hive-metastore .
docker-compose up -d
在执行完 docker-compose up -d
等前置步骤后,先进入 MinIO 控制面板,创建一个名为 tpch
的 Bucket 。
![](http://e1idc.net/wp-content/uploads/2023/09/frc-08da9e25fc959fbdfffe1f4c5de1abbd.png)
运行下述命令可以打开 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;
![](http://e1idc.net/wp-content/uploads/2023/09/frc-baae02e98468f538ad10b1f9ce4c7c44.png)
查询对应的 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 实例。
![](http://e1idc.net/wp-content/uploads/2023/09/frc-37d9da78c7d82fab1767cdc043ecd3ef.png)
通过 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;
![](http://e1idc.net/wp-content/uploads/2023/09/frc-e2d3aa8635f3f26502345e8796d6fe7a.png)
提示
- 要使用 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 。
展开阅读全文
PHP、.NET 和 Java 到底谁遥遥领先,看评论区见高低!
Svelte 造了个“新轮子”—— runes
Windows 版 AI Copilot 将于 9 月 26 日推出
思科 280 亿美元收购 Splunk
网易国产开源分布式存储系统 —— Curve
OpenAI 发布 DALL-E 3,支持使用 ChatGPT 生成提示词
Netty 4.1.98.Final 发布,Java 网络应用框架
国内首家!阿里云 Elasticsearch 8.9 版本释放 AI 搜索新动能
Jenkins 使用不安全权限创建临时插件
MyBatis-Flex v1.6.6 发布,已支持 JDK 21
开源免费的低代码平台 — JeecgBoot v3.5.5 版本发布,性能大升级版本
开源免费的低代码报表 — JimuReport 积木报表 v1.6.2 版本正式发布
开源 MQTT GUI 客户端 MqttInsight 发布 v1.0.1
Go 1.22 将修复 for 循环变量错误
Bee 2.1.8 支持多表增删改,自动生成带 Swagger 的 Javabean(更新 Maven)
百灵快传(B0Pass)大文件传输工具 v2.0.2 - 百灵快传专用安卓 App 发布
Linux 内核 LTS 期限将从 6 年恢复至 2 年
ModStartCMS v7.3.0,富文本 MP3支持,后台组件优化
英伟达的 AI 霸主地位会持久吗?
deepin 官宣正式接入大模型
聊聊我在店铺开放域做性能优化的体会
实录:利用OpenNJet实现动态upstream域名解析
当一个程序员决定穿上粉裤子
理论+示例,详解GaussDB(DWS)资源管理
CVE-2023-31248:Linux Kernel 本地权限提升漏洞通告
SPEC 公平使用规则
快速开始 PieCloudDB Database:管控平台权限系统
【我和openGauss的故事】openGauss逻辑备份恢复
无需学习Python,一个公式搞定领导想看的大屏
《玩转鲲鹏DevKit系列》第四期:如何基于鲲鹏平台高效开发?
2023年6月勒索软件流行态势分析
GaussDB(for Redis)游戏实践:玩家下线行为上报
VOC数据洞察在淘宝详情页的应用与实践
分享实录 | 将 NGINX 打造成功能强大的 API 网关(下)
安全日报(2023.08.28)
9月21日·上海 | 邀您参与爱可生技术会议,聊聊国产数据库创新实践
安全日报(2023.08.29)
免费下载 | RMAN工具使用
窗口到底有多滑动?揭秘TCP/IP滑动窗口的工作原理
致谢丨感谢有你,JumpServer开源项目九周年致谢名单
Partition Key:从一个社区提问走出来的新功能
详细议程来了丨9月16日相约openGauss Meetup(杭州站),欢迎报名!
安全日报(2023.09.15)
2023年7月勒索软件流行态势分析
HarmonyOS极客松“上分秘籍”! 高手们顶峰相见!
安全日报(2023.07.19)
操作教程|通过1Panel开源Linux面板快速安装DataEase
开源的Datadog?可观测性平台SigNoz是否名副其实?
浅析设计模式5 -- 责任链模式
【我和openGauss的故事】使用vscode远程开发&调试openGauss的om代码
某球中如何驾驶西锐SR-22小飞机在美国大峡谷中穿行
上榜 Gartner | 中国领先的实时数据管理厂商 DolphinDB
使用 OpenVINO™ 加速生成式 AI | OpenVINO™ DevCon 第二期开启报名!
【直播预告】Langchain: 大语言模型的新篇章
下面四组SQL命令,全部属于数据操作语言DML的命令是?
判断题 | pg数据库中,命令c可以切换数据库
【好文推荐】openGauss GAUSS-51400/53600 其它节点状态unknow问题处置
嘿!9月,你好!
限时招募高校学生,带你沉浸式体验HDC.Together 2023
Falco操作系统安全威胁监测利器
河北幸福消费金融基于 Apache Doris 构建实时数仓,查询提速 400 倍!
“多”维演进:智能编码的深度进化
如何get一个终身免费续期的定制数字人?
马斯克回应盖茨;谷歌反垄断案开庭;苹果发布 3nm 芯片的 iPhone 15丨RTE开发者日报 Vol.48
QNAP 多个高危漏洞通告
安全攻防丨反序列化漏洞的实操演练
跃居榜首!取代 MySQL 成为最受欢迎的数据库!
木鱼一敲烦恼丢掉,一个恢复内心平静的赛博空间
pg数据库中,dt [模式]命令查看模式下所有表?
如何为物联网设备注入“华为云+鸿蒙DNA”?
AIGC狂飙下,一套优雅的媒体服务“顶层设计”
深入解读 MongoDB CDC 的设计与实现
音视频技术开发周刊 | 297
另外一款模板引擎的魅力
下一代边缘计算技术在哪里?
生成式 AI:机会与风险并存,企业该如何取舍?
如何解决系统报错:nf_conntrack: table full, dropping packets
What's new in Pika v3.5.0
玩转 LLMs 之「为什么不问问 Milvus」
Kurator v0.4.0版本更新4大内容,满足多云环境的复杂需求
中国IT统一运维ITSM软件市场,云智慧再次稳居榜首!
Llama2 评测大公开!知识库场景下能否赶超 ChatGPT?
认识BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor
立即报名 | Microservices June 微服务之月再度开启
精选一线企业最佳生产实践,《Apache Doris 用户案例集》重磅发布!
数仓性能调优:大宽表关联MERGE性能优化
详解4种模型压缩技术、模型蒸馏算法
音视频技术开发周刊 | 308
开发者实战 | 在 AI 爱克斯开发板上用 OpenVINO™ 加速 YOLOv8 目标检测模型
KubeEdge Sedna v0.6 & Ianvs v0.2 重磅发布:边云协同终身学习全面升级
AI Image Codec技术落地实践
质效两全:媒体服务的创新“顶设”
跑AI大模型的K8s与普通K8s有什么不同?
解析Spring内置作用域及其在实践中的应用
社区分享|JumpServer开源堡垒机一直都是我的第一选择
Pose泰裤辣! 一键提取姿态生成新图像
未来已来,视频编码还“卷”得动吗?
前端工程中的设计模式应用
【OPEN IC】lsfMonitor V1.3发布,新增资源使用率统计分析
华为云渲染实践
©OSCHINA(OSChina.NET)
工信部
开源软件推进联盟
指定官方社区
社区规范
深圳市奥思网络科技有限公司版权所有
粤ICP备12009483号
.codeBlock:hover .oscCode{display: block !important;} .codeBlock{z-index: 2;position: fixed;right: 20px;bottom: 57px; overflow: hidden; margin-bottom: 4px;padding: 8px 0 6px;width: 40px;height: auto;box-sizing: content-box;cursor: pointer;border: 1px solid #ddd;background: #f5f5f5;text-align: center;transition: background 0.4s ease;}
@media only screen and (max-width: 767px){ .codeBlock{display: none;}}
/*
html{
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
_filter:none;
}
*/
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https'){
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else{
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
var _hmt = _hmt || [];
_hmt.push(['_requirePlugin', 'UrlChangeTracker', {
shouldTrackUrlChange: function (newPath, oldPath) {
return newPath && oldPath;
}}
]);
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?a411c4d1664dd70048ee98afe7b28f0b";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
{
"@context": "https://ziyuan.baidu.com/contexts/cambrian.jsonld",
"@id": "https://my.oschina.net/u/5489811/blog/10112566",
"appid": "1653861004982757",
"title":"使用 Databend 加速 Hive 查询 - Databend的个人空间",
"images": ["https://oscimg.oschina.net/oscnet/up-33fea8bdaf55ae1c1c0bdb0ff3d3907d618.png"],
"description":"作者:尚卓燃(PsiACE) 澳门科技大学在读硕士,Databend 研发工程师实习生 Apache OpenDAL(Incubating) Committer https://github.com/PsiACE 随着架构的不断迭代和更新,大数据系统的查询目标也从大吞吐量查询逐...",
"pubDate": "2023-09-21T17:54:00+08:00",
"upDate":"2023-09-21T17:54:00+08:00",
"lrDate":""
}
<!--
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-TK89C9ZD80');
-->
window.goatcounter = {
path: function(p) { return location.host + p }
}
(function(){
var el = document.createElement("script");
el.src = "https://lf1-cdn-tos.bytegoofy.com/goofy/ttzz/push.js?2f2c965c87382dadf25633a3738875e5ccd132720338e03bf7e464e2ec709b9dfd9a9dcb5ced4d7780eb6f3bbd089073c2a6d54440560d63862bbf4ec01bba3a";
el.id = "ttzz";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(el, s);
})(window)
// 动弹话题页面描述加链接
$(function () {
const el = $('.www-tweet .tweet-form-header .topic-desc');
if (el && el.length > 0) {
const desc = el.html();
el.html(desc.replace(/http(s?)://[wd-./?=]+/, url => `${url}`));
}
});
点击引领话题📣
发布并加入讨论🔥