FAIRYFAR-INTERNAL
 
  FAIRYFAR-INTERNAL  |  SITEMAP  |  ABOUT-ME  |  HOME  
您的足迹: TPC-DS工具使用
TPC-DS工具使用

以tpc-ds_v2.13.0生成GPDB测试为例。

一、下载

原版

原版tool请至 TPC官网 下载。境内因为google无法访问问题,可能无法下载,方法见:TPC-DS工具下载方法

修订版

本文提供针对 GPDB SQL语法的修订版下载:tpc-ds_oem

二、编译

snippet.bash
unzip tpc-ds_v2.13.0.zip
cd v2.13.0rc1/tools
make -f Makefile.suite

三、生成数据

以下命令生成1s数据,数据文件保持在 ../1s 目录:

snippet.bash
./dsdgen -SCALE 1 -TERMINATE N -DIR ../1s
  • TERMINATE:表示每行数据是否以分割符结尾。

四、生成查询SQL

原生版本

截至到最新的v2.13.0的原生版dsqgen报以下错误:

snippet.bash
ERROR: Substitution'_END' is used before being initialized at line 63 in ../query_templates/query1.tpl

需要手动的去修改query_templates目录下相应的模板,以query1.sql为例,需要增加_END定义:

image

或者,直接修改tempalte_query/netezza.tpl,增加 define _END=""; 定义。

生成查询,可以使用以下脚本:

snippet.bash
#!/bin/sh
for i in `seq 1 99`
do
./dsqgen -SCALE 1 -DIRECTORY ../query_templates/ -TEMPLATE "query${i}.tpl" -DIALECT netezza -FILTER Y -VERBOSE Y > ../query_1s/${i}.sql
done

GPDB版本

因为原生工具生成的查询SQL,GPDB不支持,所以需要修改模板,使用tpc-ds_oem版本,直接使用query_templates_gpdb作为模板即可。

五、问题

文件编码

生成的数据文件基本上都是ASCII编码,但是其中的customer.dat文件不是ASCII编码,在加载时可能会报错。例如,GPDB加载报以下错误:

snippet.bash
ERROR:  invalid byte sequence for encoding "UTF8": 0xd4 0x54  (seg2 slice1 10.10.0.5:6406 pid=538409)
CONTEXT:  External table customer_ext, line 28 of file gpfdist://localhost:9888/1s/customer.dat

查看customer.dat文件编码:

snippet.bash
[ff@test-2 1s]$ file customer.dat
customer.dat: ISO-8859 text

转换编码方法:

snippet.bash
[ff@test-2 1s]$ iconv -f ISO-8859-1 -t UTF-8 customer.dat > customer.dat.new
[ff@test-2 1s]$ file customer.dat.new
customer.dat.new: UTF-8 Unicode text

六、参考



打赏作者以资鼓励: