Ubuntu环境使用TPC-DS工具生成测试数据

1、下载工具

两种渠道

 a、官网(建议直接跳过~)

地址:http://www.tpc.org/tpc_documents_current_versions/current_specifications.asp

在信息填写正确的情况下,无法下载。看网友的解答,需要用谷歌浏览器才能下载。尝试未果。

b、github上下载

地址: https://github.com/gregrahn/tpcds-kit.git

ps:官方的包生成sql的时候会报错,上面这个大神已经修复。

2、编译

操作环境:Ubuntu 16.04

进入TPC-DS工具包所在目录,由于下载的是源码,需要编译后才能使用。

a、解压

unzip  tpcds-kit-master.zip

b、编译

编译之前请确认依赖环境ok

ubuntu:

1sudo apt-get installgccmake flex bison byacc git

CentOS/RHEL:

1sudoyuminstallgccmake flex bison byacc git
tpcds-kit-master/tools

make  -f  Makefile.suite

编译过程中报错:

make: yacc: Command not found。报错是因为yacc没有安装 。

安装yacc

sudo apt-get install -y byacc

再次编译

又报错对‘yy_create_buffer’未定义的引用。对C/C++不熟悉,搜索了一下也没有相关的解答。百思不得其解之下,换了个思路。可能是第一次编译报错生成的错误文件对第二次编译产生的影响。

于是删除解压后的目录,重新编译成功。

如果生成dsdgen和dsqgen且无报错,说明编译成功

ll *gen

 3、生成数据

第一次使用这个工具我是一脸懵比的。因为官方的文档特喵的根本看不懂。回想一下,你碰到不熟悉的Linux命令是怎么做的?man或者–help,对吧。这里也可以用–help。

先不着急生成数据,看一下帮助信息先。

./dsdgen  --help
  • DIR:数据存放目录。
  • SCALE:数据量,以GB为单位。
  • TABLE:生成哪张表的数据,一共有24张表哦。
  • PARALLEL:生成的数据一共分为多少份,一般生成TB级数据才会用到。
  •  CHILD:当前数据是第几份,与PARALLEL配对使用。
  • FORCE:强制写入数据。

常用的参数就上面几个。下面我们来生成1G包含所有表的数据。

./dsdgen  -scale 1 -dir ../data/

等待dsdgen程序正常退出后,1G数据需要2~3min左右,进入data目录查看生成的数据。

cd ../data

假如只想生成其中某一张表的数据呢?这就需要用到-table参数了,以web_returns表为例。

./dsdgen  -scale 1 -dir ../data -table web_returns

报错了,信息如下:

web_returns是子表,它是依赖于父表web_sales的。生成父表的时候也会同时生成子表,我们来验证一下。

./dsdgen  -scale 1 -dir ../data -table web_sales

说明一下,最终生成的数据量以少于scale值的。

dsdgen的用法暂时先总结到这里。

 4、生成SQL

查询SQL使用dsqgen生成,主要用于测试数据仓库的性能,一共99个。详细用法可以用–help查看帮助信息。这里不做介绍直接生成。

./dsqgen  -DIRECTORY ../query_templates/ -TEMPLATE "query1.tpl" -DIALECT netezza -FILTER Y > ../sql/query1.sql
  • -DIRECTORY:SQL模板的路径
  • -TEMPLATE:SQL模板的名称
  • -DIALECT:include query dialect defintions found in <s>.tpl
  • -FILTER:重定向到标准输出。

查看生成的SQL:

一共有99,每一个都要这样生成多费劲呀。来写个for循环一把生成所有的SQL。

shell版:

#!/bin/sh
for i in `seq 1 99`
do
./dsqgen  -DIRECTORY ../query_templates/ -TEMPLATE “query${i}.tpl” -DIALECT netezza -FILTER Y > ../sql/query${i}.sql
done

Python3版:

#coding:utf-8
import os
print(“generate query sql”)
for i in range(1,100):
    tpl = “query”+str(i)+”.tpl”
    qsql = “query” +str(i) +”.sql”
    #拼接命令
    cmd = “./dsqgen  -DIRECTORY ../query_templates/ “+”-TEMPLATE “+tpl+” -DIALECT netezza -FILTER Y > “+”../sql/”+qsql
    #print(cmd)
    #执行命令
    os.system(cmd)

去sql目录下查看刚才生成的SQL:

这种情况下还是shell更快一点。

5、总结

  1. 通过TPC-DS,可以生成指定量级的数据。
  2. 碰到报错不要慌,先google或bing,不要用某度,原因你懂的。
  3. TPC-DS基本用法已经总结完了,但是实际操作中还有很多问题,比如:
  • 我想要生成10T数据怎么搞?
  • 怎么判断生成的数据是否正确呢?
  • child和parallel怎么使用?
  • 数据和SQL生成完了怎么测试?
  • 。。。。。。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/222165.html<

(0)
管理的头像管理
上一篇2025-04-15 09:07
下一篇 2025-04-15 09:08

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注