聊聊数仓中TPCD-DSTPC-H与查询性能的那些事儿
本文分享自华为云社区《GaussDB(DWS) 《DWS之TPCD-DS&TPC-H与查询性能的那些事儿》》,作者: 一剑战八荒 。
1 综述
本文目标在于,详细讲述使用GaussDB(DWS)时,如何使用TPC-DS/TPC-H等标准数据模型,获取DWS的查询性能数据。主要包括,整体流程概述,DWS集群和ECS弹性云服务器环境准备,TPC-DS/TPC-H造数,建表与数据导入,执行查询与结果收集四个章节。
受限于编辑器的显示,为了更好地阅读效果,烦请下载附件的原版文档查看,获取相关脚本。
其中涉及的很多操作细节无法一一展开叙述,以梳理和展示整体的逻辑为主。其中主要涉及的工具OBS/GDS/JDBC copy后续会单独开篇叙述。若有无法解决的疑问,欢迎评论留言。
2 整体流程概述
3 DWS集群和ECS弹性云服务器环境准备
3.1 创建ECS弹性云服务器
3.2 创建DWS数据仓库
4 TPC-DS/TPC-H造数
4.1 准备数据生成工具
- 远程连接ECS弹性云
- 执行 yum install git,安装git
- 执行 yum install gcc,安装gcc
- 执行 mkdir –p /data1/script/tpcds-kit/tpcds1000X ; mkdir –p /data1/script/tpch-kit/tpch100X 创建tpc-ds或者tpc-h的存放目录
- TPC-DS造数工具dsdgen请从官网获取最新版本。
通过FTP或者OBS服务上传到ECS的 /data1/script/tpcds-kit;(OBS使用方法详见附录1)
TPC-H造数工具可直接git clone下载。
cd /data1/script/tpch-kit;
git clone https://github.com/gregrahn/tpch-kit.git
- 解压tpch的包,进入dbgen目录,make 编译对应的造数工具dbgen
- 解压tpcds的包,进入tools目录,make 编译对应的造数工具dsdgen
4.2 生成数据文件
- 生成TPCH数据文件
进入dbgen目录后,执行./dbgen –s 100 > ./dbgen_100.log 2>&1 &,下发生成100Xtpch数据的命令到后台执行
可以通过du –sh dbgen/*.tbl,判断数据文件的生成进度。100Xtpch数据文件总大小约107GB,
也可以通过ps ux|grep dbgen,查看生成数据文件的进程是否退出
- 生成TPCDS数据文件
因为tpcds1000X的数据,单个标的数据文件较大,我们采取分片生成的策略。
进入tools目录后,执行
for c in {1..10};do (./dsdgen –sc 1000 –parallel 10 –child ${c} –dir /data1/script/tpcdsk-kit/tpcds1000X > /dev/null 2>&1 &);done
其中,
-sc 指定数据规模
-parallel 指定分片数
-child 指定当前是生成分片中的第几片
-dir 指定生成数据文件存放的目录
可以通过du –sh tpcds100X/*.dat,判断数据文件的生成进度。1000Xtpcds数据文件总大小约920GB,
也可以通过ps ux|grep dsdgen,查看生成数据文件的进程是否退出。
5 建表与数据导入
5.1 GDS方式导入
5.1.1 从数据仓库服务的连接管理页面下载ECS对应版本的gsql客户端,通过ftp或obs上传到ECS上;(OBS使用方法详见附录1)
5.1.2 在ECS上部署GDS,详见华为云官方资料https://support.huaweicloud.com/tg-dws/dws_07_0759.html
5.1.3 在ECS上通过gsql工具连接集群,连接群集群所需的ip和端口号信息,可以从数据仓库服务的连接管理页面获取
5.1.4 在ECS上使用gsql连接集群,创建tpch/tpcds的内表和gds外表。建表语句详见如下sql文件,
5.1.5 在ECS使用gsql连接集群,通过GDS外表,使用insert into [目标表] select * from [目标表外表]的方式导入数据到集群内。
5.2 JDBC copy方式导入
5.2.1 从数据仓库服务的连接管理页面下载ECS对应版本的JDBC驱动,通过ftp或obs上传到ECS上;(OBS使用方法详见附录1)
5.2.2 上传JDBC驱动和copy的java脚本到ECS,此处提供dws_copy.java源码
5.2.3 在ECS上javac编译java文件,然后生成copy编译后源码和JDBC驱动的jar包,Copy.jar。编译和生成jar包详细流程如下图,
5.2.4 在ECS上java –jar Copy.jar通过JDBC copy数据到集群内。
可执行源码和二次封装的shell JDBC导数执行脚本详见如下压缩包
6 执行查询与结果收集
6.1通过编写shell脚本自动化执行查询和结果收集。
脚本压缩包如下,其中包含query.conf和run_query.sh两个文件。
query.conf为集群信息配置文件,包含如下四个变量
db_name=tpcds_test 数据库名称
db_port=6000 数据库端口号
db_user=tpcds_user 数据库用户
user_passwd=Gauss_234 数据库用户密码
编辑query.conf为集群对应的信息后,执行sh run_query.sh即可开始查询执行和结果收集。
注意事项:
- gsql客户端的使用需要每次连接后,source gsql_env,执行查询脚本前请确认gsql可执行;
- 每个查询会跑6次,一次收集执行计划,两次预热,三次正式查询,最终结果取后三次查询的平均值;
- 查询脚本执行后会立即生成query_log_yymmdd_hhmmss名称的目录,其中
exlain_log子目录存放查询计划,
pre_warm子目录存放预热执行结果,
real_test子目录存放正式查询执行结果,
query_result.csv文件,csv格式汇总所有查询的执行结果,csv中结果实例如下图
7 附录
7.1 华为云OBS官方使用指导
https://support.huaweicloud.com
点击关注,第一时间了解华为云新鲜技术~
聊聊数仓中TPCD-DSTPC-H与查询性能的那些事儿相关推荐
- 数仓中应该出现的所有表格
数仓中应该出现的所有表格及其逻辑 1.ods_app_log(app日志贴源表) 计算:详情请见数据预处理整体代码实现 源表:原始数据 +--------------+---------------- ...
- Apache Doris在美团外卖数仓中的应用实践
来自:美团技术团队 美团外卖数据仓库通过MOLAP+ROLAP双引擎模式来适配不同应用场景.MOLAP引擎使用了Apache Kylin.ROLAP我们经过综合考虑,选择了Apache Doris.本 ...
- Hive 数仓中常见的日期转换操作
(1)Hive 数仓中一些常用的dt与日期的转换操作 下面总结了自己工作中经常用到的一些日期转换,这类日期转换经常用于报表的时间粒度和统计周期的控制中 日期变换: (1)dt转日期 to_date(f ...
- 数仓中指标-标签,维度-度量,自然键-代理键,数据集市等各名词解析及关系
序列号 内容 链接 1 大数据知识面试题-通用(2022版) https://blog.csdn.net/qq_43061290/article/details/124819089 2 大数据知识面试 ...
- 数仓中指标-标签,维度-度量,自然键-代理键等各名词深度解析
作为一个数据人,是不是经常被各种名词围绕,是不是对其中很多概念认知模糊.有些词虽然只有一字之差,但是它们意思完全不同,今天我们就来了解下数仓建设及数据分析时常见的一些概念含义及它们之间的关系. 本文首 ...
- 数仓中的口径及常用口径
最近去面试,被面试官问到,你们的数仓搭建过程中的口径是什么?当时一脸懵逼,不知道如何回答,这是什么鬼?后来阅读了几篇博文,哦~~~原来口径指的就是你的取数逻辑,也就是你们的一套规则,口径是统计学中的一 ...
- 数仓中关于“维度” “粒度”的详细理解(转)
一.维度是什么 不懂就问,维度是什么?我们学习的自然反应,自然是去查阅专业资料. 1)阿里dataphin产品简介--基本概念是这样介绍维度:人们观察事物的角度,是指一种视角,是确定事物的多方位.多角 ...
- 数仓中的星型模型和雪花模型
1.概念 在多维分析的商业智能解决方案中,根据事实表和维度表的关系,又可将常见的数据模型分为星型模型和雪花型模型.在设计逻辑型数据的模型的时候,就应考虑数据是按照星型模型还是雪花型模型进行组织. 当所 ...
- hive 复杂数据类型 在数仓中应用(array、map、struct、和其组合应用)
环境:一般宽表建表可能考虑存储更多信息选择复杂模型建设 复杂数据类型:array.map.struct 1.数组array,里边不能装不同类型的数据 more hive_array.txt zhang ...
最新文章
- js 删除数组几种方法
- 应用Mongoose开发MongoDB(2)模型(models)
- Hadoop背景、模块介绍、架构
- Android 网络协议
- POPTEST老李谈Debug和Release的区别(c#) 1
- 为什么 scrum 开发人员是一个 T-形的人 ?
- 西安Uber优步司机奖励政策(1月11日~1月17日)
- 安徽省计算机一级PDF,安徽省计算机一级考试试题 .pdf
- linux java Cannot allocate memory
- c语言sqlite3删除最后一行,sqlite学习笔记11:C语言中使用sqlite之删除记录
- DEA博弈交叉效率matlab,基于DEA/AR博弈交叉效率方法的学术期刊评价研究
- 咬了一口苹果死去的计算机之父——图灵
- 电脑与电脑之间快速传输大文件的方法
- Win8企业版如何升级至win10专业版
- 计算机组成原理实验移位运算,移位运算实验
- excel行数据不规则解析匹配
- Windows的快捷方式、符号链接、目录联接、硬链接的区别
- LSK理论、系统及应用目标规划简介
- 照片整理工具(日历相册, 重复文件清理, 手机照片同步, 图片尺寸缩减)
- 面试中sql调优的几种方式_面试方式
热门文章
- 开源3d模型格式转换_将您的开源业务转换为基于收入的模型时应考虑的因素
- WebStorm 打开Node.js的代码提示功能
- HTML5 本地存储 Web Storage
- 深度学习笔记(25) 池化层
- 在c语言中利用链表常见问题,C语言,链表中遇到棘手有关问题
- 具有管理计算机全部硬件,2012河北省事业单位招聘考试真题演练汇总
- Robochameleon——Quick Start Guide
- 计算机创新发展战略,计算机行业:《智能汽车创新发展战略》征求意见稿点评...
- pymavlink 源码剖析(二)之生成代码
- 封装axios统一请求