
导读:在做一些大数据相关的系统或引擎优化的时候,避免不了要对引擎进行测试。那么用什么样的数据、用哪些负载才能够使测试更具有权威性呢?TPC系列测试基准想必不用多介绍了,本文主要来分享一下如何快速入手tpch测试基准,亲测有用。
导读:在做一些大数据相关的系统或引擎优化的时候,避免不了要对引擎进行测试。那么用什么样的数据、用哪些负载才能够使测试更具有权威性呢?TPC系列测试基准想必不用多介绍了,本文主要来分享一下如何快速入手tpch测试基准,亲测有用。

TPC测试标准分类联机在线事务处理系统(OLTP)测试标准:TPC-C、TPC-E(最新)
决策支持/大数据(DS)测试标准:TPC-H、TPC-DS(最新)
服务器虚拟化(VMS)测试标准:TPC-VMS
1.TPC-H下载
可以去官网下载 www.tpc.org/tpch/ TPCH_Tools.zip 后台回复tpch可以获取
2.使用
1.解压
# unzip TPCH_Tools.zip
2.配置
# cd tpch_2_17_0/dbgen/
# cp makefile.suite makefile
生成ORACLE数据库的脚本和数据
主要修改以下参数值
# vim makefile
-----
CC = gcc
DATABASE= ORACLE
MACHINE = LINUX
WORKLOAD = TPCH
-----
3. 生成执行命令,生成dbgen
# make --生成dbgen
# ./dbgen -s 1 --生成1GB数据
# ./dbgen -s 0.01 --生成10MB数据,可用于功能测试3.查看结果
执行完生成数据命令后,可以在当前目录的
(1)queries目录中看到查询负载sql
(2)当前目录看到8个*.tbl文件,就是你生成好的数据文件
把他们拷贝到别的地方就行了4.导入Hive
可以有不同的方法,下面以其中一个表【customer】为例介绍一种可行的方法:
mkdir customer
mv customer.tbl customer/
## 1.进入hivehive
## 2.创建一个数据库
CREATE DATABASE tpch;
## 3.创建外表
Create external table customer (C_CUSTKEY INT , C_NAME STRING , C_ADDRESS STRING , C_NATIONKEY INT , C_PHONE STRING , C_ACCTBAL DOUBLE , C_MKTSEGMENT STRING , C_COMMENT STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/mnt/sdj1/tpch/g100/customer';
##此地址为hdfs地址
## 4.将数据导入hiveLOAD DATA LOCAL INPATH '/mnt/sdj1/tpch/g100/customer/customer.tbl' INTO TABLE customer;
##此地址为你的数据文件真实本地地址
## 5.完毕,可以发现hdfs中的地址里面已经导入了数据文件,查询hive表也有了数据
5.导入GaussDB
##我这里是导入GaussDB,其实跟导入mysql,postgresql一样,最重要的就是去掉每一行尾部的竖线分隔符
##1.去除分隔符
=====
[root@msap-01 customer]# head -3 customer.tbl
1|Customer#000000001|IVhzIApeRb ot,c,E|15|25-989-741-2988|711.56|BUILDING|to the even, regular platelets. regular, ironic epitaphs nag e|
2|Customer#000000002|XSTf4,NCwDVaWNe6tEgvwfmRchLXak|13|23-768-687-3665|121.65|AUTOMOBILE|l accounts. blithely ironic theodolites integrate boldly: caref|
3|Customer#000000003|MG9kdTD2WBHm|1|11-719-748-3364|7498.12|AUTOMOBILE| deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov|======
## 2.把所有的*.tbl文件放到同一个目录下,然后执行如下脚本进行分隔符去除,并另存为同名的csv文件中
# for i in `ls *.tbl`; do sed 's/|$//' $i > ${i/tbl/csv}; done
=====
1|Customer#000000001|IVhzIApeRb ot,c,E|15|25-989-741-2988|711.56|BUILDING|to the even, regular platelets. regular, ironic epitaphs nag e
2|Customer#000000002|XSTf4,NCwDVaWNe6tEgvwfmRchLXak|13|23-768-687-3665|121.65|AUTOMOBILE|l accounts. blithely ironic theodolites integrate boldly: caref
3|Customer#000000003|MG9kdTD2WBHm|1|11-719-748-3364|7498.12|AUTOMOBILE| deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov
=====
看,已经没有了最后的下划线
##3.建表
我们同样用一个表来进行演示
CREATE TABLE NATION ( N_NATIONKEY INTEGER NOT NULL,
N_NAME CHAR(25) NOT NULL,
N_REGIONKEY INTEGER NOT NULL,
N_COMMENT VARCHAR(152));
## 4.将数据导入表中Copy nation FROM 'your/adress/nation.tbl' WITH DELIMITER AS '|';
#不同的数据库导入语句可能不一样,mysql应该是load命令
## 5.创建主、外键
ALTER TABLE NATION ADD PRIMARY KEY (N_NATIONKEY);
ALTER TABLE NATION ADD FOREIGN KEY (N_REGIONKEY) references REGION;
其他表类似
## 6.高斯数据库也可以通过挂外表的方式进行导数
(1)创建外表
DROP FOREIGN TABLE IF EXISTS ext_orders_10g;
CREATE FOREIGN TABLE ext_orders_10g
(
O_ORDERKEY INTEGER NOT NULL,
O_CUSTKEY INTEGER NOT NULL,
O_ORDERSTATUS CHAR(1) NOT NULL,
O_TOTALPRICE DECIMAL(15,2) NOT NULL,
O_ORDERDATE DATE NOT NULL,
O_ORDERPRIORITY CHAR(15) NOT NULL,
O_CLERK CHAR(15) NOT NULL,
O_SHIPPRIORITY INTEGER NOT NULL,
O_COMMENT VARCHAR(79) NOT NULL
)
SERVER gsmpp_server
OPTIONS(
LOCATION 'gsfs://IP:port/orders_10g/orders.csv',
FORMAT 'CSV' ,
DELIMITER '|',
ENCODING 'utf8',
HEADER 'false',
FILL_MISSING_FIELDS 'true',
IGNORE_EXTRA_DATA 'true'
)
READ ONLY
LOG INTO product_info_err
PER NODE REJECT LIMIT 'unlimited';(2)插入内表
insert into orders_10g select * from ext_orders_10g ;
(3)完毕,查询已经有了数据
select count(*) from orders_10g;
以上提供了两种类型的数据管理系统的基准使用案例(思路),仅供参考交流。

Presto引擎如何适配不同的Hive表存储格式





