新聞中心
1、下載工具
兩種渠道

a、官網(wǎng)(建議直接跳過(guò)~)
地址:http://www.tpc.org/tpc_documents_current_versions/current_specifications.asp
在信息填寫正確的情況下,無(wú)法下載??淳W(wǎng)友的解答,需要用谷歌瀏覽器才能下載。嘗試未果。
b、github上下載
地址: https://github.com/gregrahn/tpcds-kit.git
ps:官方的包生成sql的時(shí)候會(huì)報(bào)錯(cuò),上面這個(gè)大神已經(jīng)修復(fù)。
2、編譯
操作環(huán)境:ubuntu 16.04
進(jìn)入TPC-DS工具包所在目錄,由于下載的是源碼,需要編譯后才能使用。
a、解壓
unzip tpcds-kit-master.zip
b、編譯
編譯之前請(qǐng)確認(rèn)依賴環(huán)境ok
ubuntu:
1 sudo apt-get install gcc make flex bison byacc git
CentOS/RHEL:
1 sudo yum install gcc make flex bison byacc git
tpcds-kit-master/tools make -f Makefile.suite
編譯過(guò)程中報(bào)錯(cuò):
make: yacc: Command not found。報(bào)錯(cuò)是因?yàn)閥acc沒有安裝 。
安裝yacc
sudo apt-get install -y byacc
再次編譯
又報(bào)錯(cuò)對(duì)‘yy_create_buffer’未定義的引用。對(duì)C/C++不熟悉,搜索了一下也沒有相關(guān)的解答。百思不得其解之下,換了個(gè)思路??赡苁堑谝淮尉幾g報(bào)錯(cuò)生成的錯(cuò)誤文件對(duì)第二次編譯產(chǎn)生的影響。
于是刪除解壓后的目錄,重新編譯成功。
如果生成dsdgen和dsqgen且無(wú)報(bào)錯(cuò),說(shuō)明編譯成功
ll *gen
3、生成數(shù)據(jù)
第一次使用這個(gè)工具我是一臉懵比的。因?yàn)楣俜降奈臋n特喵的根本看不懂?;叵胍幌?,你碰到不熟悉的Linux命令是怎么做的?man或者--help,對(duì)吧。這里也可以用--help。
先不著急生成數(shù)據(jù),看一下幫助信息先。
./dsdgen --help
- DIR:數(shù)據(jù)存放目錄。
- SCALE:數(shù)據(jù)量,以GB為單位。
- TABLE:生成哪張表的數(shù)據(jù),一共有24張表哦。
- PARALLEL:生成的數(shù)據(jù)一共分為多少份,一般生成TB級(jí)數(shù)據(jù)才會(huì)用到。
- CHILD:當(dāng)前數(shù)據(jù)是第幾份,與PARALLEL配對(duì)使用。
- FORCE:強(qiáng)制寫入數(shù)據(jù)。
常用的參數(shù)就上面幾個(gè)。下面我們來(lái)生成1G包含所有表的數(shù)據(jù)。
./dsdgen -scale 1 -dir ../data/
等待dsdgen程序正常退出后,1G數(shù)據(jù)需要2~3min左右,進(jìn)入data目錄查看生成的數(shù)據(jù)。
cd ../data
假如只想生成其中某一張表的數(shù)據(jù)呢?這就需要用到-table參數(shù)了,以web_returns表為例。
./dsdgen -scale 1 -dir ../data -table web_returns
報(bào)錯(cuò)了,信息如下:
web_returns是子表,它是依賴于父表web_sales的。生成父表的時(shí)候也會(huì)同時(shí)生成子表,我們來(lái)驗(yàn)證一下。
./dsdgen -scale 1 -dir ../data -table web_sales
說(shuō)明一下,最終生成的數(shù)據(jù)量以少于scale值的。
dsdgen的用法暫時(shí)先總結(jié)到這里。
4、生成SQL
查詢SQL使用dsqgen生成,主要用于測(cè)試數(shù)據(jù)倉(cāng)庫(kù)的性能,一共99個(gè)。詳細(xì)用法可以用--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
.tpl -
-FILTER:重定向到標(biāo)準(zhǔn)輸出。
查看生成的SQL:
一共有99,每一個(gè)都要這樣生成多費(fèi)勁呀。來(lái)寫個(gè)for循環(huán)一把生成所有的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)
#執(zhí)行命令
os.system(cmd)
去sql目錄下查看剛才生成的SQL:
這種情況下還是shell更快一點(diǎn)。
5、總結(jié)
- 通過(guò)TPC-DS,可以生成指定量級(jí)的數(shù)據(jù)。
- 碰到報(bào)錯(cuò)不要慌,先google或bing,不要用某度,原因你懂的。
- TPC-DS基本用法已經(jīng)總結(jié)完了,但是實(shí)際操作中還有很多問(wèn)題,比如:
- 我想要生成10T數(shù)據(jù)怎么搞?
- 怎么判斷生成的數(shù)據(jù)是否正確呢?
- child和parallel怎么使用?
- 數(shù)據(jù)和SQL生成完了怎么測(cè)試?
- 。。。。。。
網(wǎng)頁(yè)名稱:Ubuntu環(huán)境使用TPC-DS工具生成測(cè)試數(shù)據(jù)
新聞來(lái)源:http://m.fisionsoft.com.cn/article/dppiphh.html


咨詢
建站咨詢
