编译及使用hive-testbench生成Hive基准测试数据

本文涉及的产品
表格存储 Tablestore,50G 2个月
简介: 编译及使用hive-testbench生成Hive基准测试数据

TPC-DS采用星型、雪花型等多维数据模式。它包含7张事实表,17张纬度表平均每张表含有18列。其工作负载包含99个SQL查询,覆盖SQL99和2003的核心部分以及OLAP。这个测试集包含对大数据集的统计、报表生成、联机查询、数据挖掘等复杂应用,测试用的数据和值是有倾斜的,与真实数据一致。TPC-DS是与真实场景非常接近的一个测试集,也是难度较大的一个测试集。

TPC-DS成为客观衡量多个不同Hadoop版本以及SQL on Hadoop技术的最佳测试集。这个基准测试有以下几个主要特点:

  • 一共99个测试案例,遵循SQL’99和SQL 2003的语法标准,SQL案例比较复杂
  • 分析的数据量大,并且测试案例是在回答真实的商业问题
  • 测试案例中包含各种业务模型(如分析报告型,迭代式的联机分析型,数据挖掘型等)
  • 几乎所有的测试案例都有很高的IO负载和CPU计算需求

hive-testbench提供了基于TPC-DS和TPC-H基准测试的数据生成器和示例查询。这里我们使用TPC-DS。

环境准备

从GitHub官网clone hive-testbench源码,Git地址如下:


https://github.com/hortonworks/hive-testbench.git

安装hive-testbench编译依赖环境


yum -y install gcc gcc-c++

编译并打包hive-testbench


在hive-testbench目录下执行如下脚本进行编译打包


./tpcds-build.sh

等待编译成功即可。

生成并加载数据

在hive-testbench目录下执行如下脚本生成并加载测试数据,生成数据的方式是向集群提交一个MapReduce作业


./tpcds-setup.sh 5

5表示生成的数据量大小GB单位,我们的测试集群规模比较小,这里先生成5G数据

后面可以跟一个数据生成的目录,目录不存在则自动生成,如果不指定数据目录则默认生成到tpcds-generate目录下。

有如上图显示则表示脚本执行成功

Hive查看生成的两个数据库tpcds_bin_partitioned_orc_5,tpcds_text_5

命令行查看HDFS上的数据是否与我们指定的量一致,各个表的大小

数据总量与指定5GB数据量一致

通过Hue验证生成的测试数据

使用Impala命令创建Parquet格式表

使用Impala命令将Hive 库中Text格式的表转换给Parquet格式的表,将tpcds_text_5库中所有表数据插入到对应Parquet格式的表中并对表执行分析

在cdp2.soundhearer.cn节点执行命令:


impala-shell -f ddl_impala_parquet.sql

SQL脚本如下

drop database if exists tpcds_parquet_5 cascade;
create database tpcds_parquet_5;
use tpcds_parquet_5;
set parquet_file_size=512M;
set COMPRESSION_CODEC=snappy;
create table call_center like tpcds_text_5.call_center stored as parquetfile;
create table catalog_page like tpcds_text_5.catalog_page stored as parquetfile;
create table catalog_returns like tpcds_text_5.catalog_returns stored as parquetfile;
create table catalog_sales like tpcds_text_5.catalog_sales stored as parquetfile;
create table customer_address like tpcds_text_5.customer_address stored as parquetfile;
create table customer_demographics like tpcds_text_5.customer_demographics stored as parquetfile;
create table customer like tpcds_text_5.customer stored as parquetfile;
create table date_dim like tpcds_text_5.date_dim stored as parquetfile;
create table household_demographics like tpcds_text_5.household_demographics stored as parquetfile;
create table income_band like tpcds_text_5.income_band stored as parquetfile;
create table inventory like tpcds_text_5.inventory stored as parquetfile;
create table item like tpcds_text_5.item stored as parquetfile;
create table promotion like tpcds_text_5.promotion stored as parquetfile;
create table reason like tpcds_text_5.reason stored as parquetfile;
create table ship_mode like tpcds_text_5.ship_mode stored as parquetfile;
create table store_returns like tpcds_text_5.store_returns stored as parquetfile;
create table store_sales like tpcds_text_5.store_sales stored as parquetfile;
create table store like tpcds_text_5.store stored as parquetfile;
create table time_dim like tpcds_text_5.time_dim stored as parquetfile;
create table warehouse like tpcds_text_5.warehouse stored as parquetfile;
create table web_page like tpcds_text_5.web_page stored as parquetfile;
create table web_returns like tpcds_text_5.web_returns stored as parquetfile;
create table web_sales like tpcds_text_5.web_sales stored as parquetfile;
create table web_site like tpcds_text_5.web_site stored as parquetfile;
insert overwrite table call_center select * from tpcds_text_5.call_center;
insert overwrite table catalog_page select * from tpcds_text_5.catalog_page;
insert overwrite table catalog_returns select * from tpcds_text_5.catalog_returns;
insert overwrite table catalog_sales select * from tpcds_text_5.catalog_sales;
insert overwrite table customer_address select * from tpcds_text_5.customer_address;
insert overwrite table customer_demographics select * from tpcds_text_5.customer_demographics;
insert overwrite table customer select * from tpcds_text_5.customer;
insert overwrite table date_dim select * from tpcds_text_5.date_dim;
insert overwrite table household_demographics select * from tpcds_text_5.household_demographics;
insert overwrite table income_band select * from tpcds_text_5.income_band;
insert overwrite table inventory select * from tpcds_text_5.inventory;
insert overwrite table item select * from tpcds_text_5.item;
insert overwrite table promotion select * from tpcds_text_5.promotion;
insert overwrite table reason select * from tpcds_text_5.reason;
insert overwrite table ship_mode select * from tpcds_text_5.ship_mode;
insert overwrite table store_returns select * from tpcds_text_5.store_returns;
insert overwrite table store_sales select * from tpcds_text_5.store_sales;
insert overwrite table store select * from tpcds_text_5.store;
insert overwrite table time_dim select * from tpcds_text_5.time_dim;
insert overwrite table warehouse select * from tpcds_text_5.warehouse;
insert overwrite table web_page select * from tpcds_text_5.web_page;
insert overwrite table web_returns select * from tpcds_text_5.web_returns;
insert overwrite table web_sales select * from tpcds_text_5.web_sales;
insert overwrite table web_site select * from tpcds_text_5.web_site;
compute stats call_center ;
compute stats catalog_page ;
compute stats catalog_returns ;
compute stats catalog_sales ;
compute stats customer_address ;
compute stats customer_demographics ;
compute stats customer ;
compute stats date_dim ;
compute stats household_demographics ;
compute stats income_band ;
compute stats inventory ;
compute stats item ;
compute stats promotion ;
compute stats reason ;
compute stats ship_mode ;
compute stats store_returns ;
compute stats store_sales ;
compute stats store ;
compute stats time_dim ;
compute stats warehouse ;
compute stats web_page ;
compute stats web_returns ;
compute stats web_sales ;
compute stats web_site ;

查看Impala表信息

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
阿里云表格存储使用教程
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,根据99.99%的高可用以及11个9的数据可靠性的标准设计。表格存储通过数据分片和负载均衡技术,实现数据规模与访问并发上的无缝扩展,提供海量结构化数据的存储和实时访问。 产品详情:https://www.aliyun.com/product/ots
相关文章
|
2月前
|
分布式计算 Shell MaxCompute
odps测试表及大量数据构建测试
odps测试表及大量数据构建测试
|
3月前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
44 11
|
3月前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
61 10
|
4月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
81 6
|
4月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段。本文介绍了 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,强调了样本量、随机性和时间因素的重要性,并展示了 Python 在 A/B 测试中的具体应用实例。
59 1
|
5月前
|
机器学习/深度学习 监控 计算机视觉
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
本文介绍了如何使用YOLOv7进行目标检测,包括环境搭建、数据集准备、模型训练、验证、测试以及常见错误的解决方法。YOLOv7以其高效性能和准确率在目标检测领域受到关注,适用于自动驾驶、安防监控等场景。文中提供了源码和论文链接,以及详细的步骤说明,适合深度学习实践者参考。
1118 1
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
5月前
|
存储 测试技术 数据库
数据驱动测试和关键词驱动测试的区别
数据驱动测试 数据驱动测试或 DDT 也被称为参数化测试。
72 1
|
5月前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
307 0
|
5月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
128 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
5月前
|
机器学习/深度学习 XML 并行计算
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用YOLOX完成图像目标检测任务的完整流程,包括数据准备、模型训练、验证和测试。
461 0
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)

热门文章

最新文章