赞
踩
LOAD DATA LOCAL INPATH
命令将生成的TPC-H数据集导入textfile
格式的Hive表中orc
格式的Hive表,因此还需要将textfile
格式转为orc格式INSERT INTO TABLE
导入orc格式的表中将下载好的tools源码上传到一台安装了gcc的linux服务器上,可以通过gcc -v
查看linu系统是否安装了gcc
解压缩tools.zip文件,得到tpc-h_tools_v3.0.0
文件夹
unzip tpc-h-tool.zip
进入dbgen目录,创建makefile
cd tpc-h_tools_v3.0.0/dbgen
cp makefile.suite makefile
编辑makefile文件,找到如下内容,设置对应的值
################
## CHANGE NAME OF ANSI COMPILER HERE
################
CC = gcc
# Current values for DATABASE are: INFORMIX, DB2, TDAT (Teradata)
SQLSERVER, SYBASE, ORACLE, VECTORWISE
# Current values for MACHINE are: ATT, DOS, HP, IBM, ICL, MVS,
# SGI, SUN, U2200, VMS, LINUX, WIN32
# Current values for WORKLOAD are: TPCH
DATABASE= HIVE
MACHINE = LINUX
WORKLOAD = TPCH
其中HIVE类型的DATABASE不存在,需要在tpcd.h
文件中进行设置,在#ifdef ORACLE
之前添加如下内容:
#ifdef HIVE
#define GEN_QUERY_PLAN "explain;"
#define START_TRAN "start transaction;\n"
#define END_TRAN "commit;\n"
#define SET_OUTPUT ""
#define SET_ROWCOUNT "limit %d;\m"
#define SET_DBASE "use %s;\n"
#endif
然后使用make命令编译tools源码
make -f makefile
本人的编译过程,有一些warning提示,但不影响整体使用
最终,会在dbgen/
目录下,生成dbgen
和qgen
两个可执行文件
dbgen
和qgen
的详细介绍,可以读 dbgen/目录下的README
文件
dbgen
dbgen/
目录生成TPC-H所需的8个ascii数据源文件<table>.tbl
命名,例如,customer.tbl
对应customer表的数据|
作为默认分隔符,可以修改dss.h
文件里面的 #define SEPARATOR '|'
来指定其他分隔符qgen
README
文件的介绍来看,qgen是一个用于TPC-H benchmark的查询生成程序dbgen/queries/
目录中,已经存在了TPC-H 对应的22个SQL通过对dbgen的介绍可知,选择不同的scale factor,可以生成不同size的数据集
不管选择什么scale factor,一定要保证自己的磁盘有足够的存储空间 !
笔者选择1000作为scale factor,由于与服务的远程连接过段时间关闭,所以选择使用nohup
创建后台作业,以成功生成对应的数据集
nohup bash -c "./dbgen -s 1000 -f" > dbgen.log 2>&1 &
数据生成任务,执行完成后,查看dbgen.log未发现任何报错信息
最终,生成的.tbl
的数据如下:
在dbgen/dss.ddl
文件中,已经存在创建表的SQL语句,但是其不符合Hive SQL的语法规范,需要改写为Hive SQL
创建数Hive据库
CREATE DATABASE tpch_1000x_orc;
在Hive数据库中创建表
USE tpch_1000x_orc;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。