;
通过这种形式,用户无需向 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;
由于 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 的实验环境可以使用 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 。
运行下述命令可以打开 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 。
展开阅读全文
ProxyPin 1.0.3 已经发布,全平台 HTTP 抓包工具
Gitee 推荐 | 开源华容道(滑块拼图)游戏
GNOME 45 "Rga" 正式发布
Calibre 6.27 发布,功能强大的开源电子书工具
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
qiaoshengda-es-client 3.0.3 已经发布,ES 查询客户端
Go 1.22 将修复 for 循环变量错误
Bee 2.1.8 支持多表增删改,自动生成带 Swagger 的 Javabean(更新 Maven)
直播邀约|8个数字了解2023腾讯全球数字生态大会
浅入深出的微前端MicroApp | 京东云技术团队
保护 TDengine 查询性能——3.0 如何大幅降低乱序数据干扰?
ThreadLocal:线程中的全局变量 | 京东云技术团队
58同城刘笠熙受邀参加A2M峰会:人工智能与机器学习峰会
“让用户成为自己的导演”——专访Tiledmedia大中华区总经理马高阳
一图了解亮相 2023 开放原子全球开源峰会上的龙蜥
1Panel开源面板项目GitHub Star数量突破5,000!
9.23IvorySQL@北京用户组技术沙龙向您发出邀请!
定时任务原理方案综述 | 京东云技术团队
浅析Java - SPI机制 | 京东云技术团队
支持AI视频处理的高容量流媒体加速卡方案
美国2009年开始入侵华为总部服务器;马斯克脑机公司将进行首次人体试验;全球首个5G卫星电话拨通丨RTE开发者日报 Vol.54
混沌演练实践(二)-支付加挂链路演练 | 京东云技术团队
Hugging News #0912: Hugging Face 2 人入选时代周刊全球百大 AI 人物
关于 TDengine 3.0 数据订阅,你需要知道这些
Zoom加入AOMedia,双方的“见面礼”不仅是AV1
钟燕清 | AI+开源时代,金融行业的机遇与挑战
SLF4J门面日志框架源码探索 | 京东云技术团队
货拉拉基于 Flink 计算引擎的应用与优化实践
Tongsuo 8.4.0-pre2 发布
使用 Transformers 为多语种语音识别任务微调 Whisper 模型
准备好了吗?下一位“AI科学家”也许就是你!
时序数据库 TDengine 六周年庆典活动圆满落幕,现场火爆
智慧电力方案:安防监控/视频分析AI识别技术在电力领域中的应用
记一次618军演压测TPS上不去排查及优化 | 京东云技术团队
华为云MetaStudio多模态数字人进展及挑战介绍
ChatGPT的探索与实践-业务应用篇 | 京东云技术团队
在这里,想象下一个技术浪潮的到来
数分钟完成高精度模型训练,联想边缘大脑炼就工业质检火眼金睛
网易云信4K 8K RTC助力远程医疗的技术实践
干货满满,就在深圳!嵌入式操作系统应用与项目开发经验分享主题沙龙
Flutter状态管理新的实践 | 京东云技术团队
JVM GC配置指南 | 京东云技术团队
项目开展CICD的实践探路 | 京东物流技术团队
AI近十年盘点:纵览AI发展历程,探寻AI未来走向
视频智能分析/AI算法智能分析网关V5告警功能配置教程
明日开幕|2023 Google 谷歌开发者大会线上观看指南
质效两全:媒体服务的创新“顶设”
战略、组织、人才和生态,数字化转型如何破局?
星火大模型VS FuncGPT(慧函数),谁更胜一筹?
眺望数据应用新态势|第八届腾讯云Techo TVP开发者峰会圆满落幕
关于 3.0 和 2.0 的数据文件差异以及性能优化思路
联通 Flink 实时计算平台化运维实践
短视频云端批量混剪实操指南
DDD项目落地之充血模型实践
服务器托管网| 京东云技术团队
纯实战!教你2小时学会10个组件“取代”传统Java开发
Tomcat处理http请求之源码分析 | 京东云技术团队
浅谈如何更好的进行需求评审 | 京东物流技术团队
爬虫系统的核心:如何创建高质量的HTML文件?
如何在 K3s 中使用网络策略
云端一体助力体验升级和业务创新
社区供稿 | PEFT | LoRA实现及核心源码解读
高性能MySQL实战(三):性能优化 | 京东物流技术团队
学习中心上新丨Python教程-Django框架快速入门到实战
飞致云开源社区月度动态报告(2023年8月)
龙蜥开发者说:参与开源要敢于担任不同角色 | 第 21 期
走向实用的AI编解码
要能力、要稳定也要降本——百度多媒体技术回顾
议题征集中| KCD 2023 杭州站,共话云原生技术
一“码”当先,PR大征集!2023 和RT-Thread一起赋能开源!
沉潜蓄势,厚积薄发:StoneDB-5.7-V1.0.4版本正式发布!特性增强,稳定性大幅提升(文末周年福利)
手把手教你在RT-THREAD bsp上运行pikascript脚本点亮小灯
对话华为云陆振宇:华为云视频直播将会沿这“两条线”赋能行业
OpenSSL 3.0.0 设计(二)|Core 和 Provider 设计
使用 Databend 加速 Hive 查询
铜锁支持 Bulletproofs 算法
分布式事务的华丽进化 | 京东物流技术团队
落地领域大模型应知必会 (1) :主要微调方法总览
从0到1搭建自己的脚手架(java后端) | 京东云技术团队
百度商业AI技术创新大赛火热进行中,携手专家大咖一起创新为更好!
大会第二日,精彩不停!LiveVideoStackCon 2023 上海站
开源风雷CFD软件多物理场耦合接口开发路线分享!!!
LiveVideoStackCon 2023深圳站 专题评审团招募进行中!
基于智能远程监考方案,云上组考打造考试新范式
JumpServer开源堡垒机与爱可生云树数据库完成兼容性认证
官宣!Databend Cloud 和青云科技达成合作
智能远程监考方案助力企业考试化繁为简
文件系统考古4:如何支持多个文件系统
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}`));
}
});
点击引领话题
发布并加入讨论