7.3.2 使用TPC-DS
下面介绍TPC-DS(注:参见:http://www.tpc.org/tpcds/,TPC BenchmarkTMDS (TPC-DS):The New Decision Support Benchmark Standard。)的使用方式。
(1)下载最新的包
用户可以到TPC主页进行下载:http://www.tpc.org。
(2)Make生成可执行文件[1]
1)将Makefile.suite文件复制为Makefile。
2)编辑修改Makefile,找到含有“OS=”的行。
3)阅读注释并增加指定的OS,如“OS=LINUX”。
4)执行make。
(3)Windows操作系统编译TPC-DS,生成可执行文件
1)安装Microsoft Visual Studio 2005。
2)双击打开整个解决方案dbgen2.sln(可能会看到报错“project file grammar.vcproj”,可以忽略这个错误)。
3)在项目列表中,右击dbgen2(是数据生成器),然后选择“build”(或者从顶层菜单单击Build→Build Solution)。
4)重复步骤3构建查询生成器qgen2。
5)针对X64 and IA64 on X86平台进行交叉编译,安装Microsoft Visual Studio 2005“Team Suite”SKU,然后选择from Build→Configuration Manager命令,并重复执行步骤3和步骤4,进而修改目标的运行平台。
(4)生成数据
1)运行“dbgen2–h”以获取帮助信息。注意:许多高级选项并不是必须的。
2)在目录/tmp下生成个100GB数据。
- dbgen2 –scale 100 –dir /tmp
常用的数据规模参数可以有100GB、300GB、1TB、3TB、10TB、30TB和100TB。
3)可以通过配置参数“-delimiter‘<c>’”选项修改文件分隔。
4)当数据规模巨大时,可以通过并行方式生成。例如,生成100GB的数据,通过4路并行在Linux/Unix上运行。
- dbgen2 –scale 100 –dir /tmp –parallel 4 –child 1 &
- dbgen2 –scale 100 –dir /tmp –parallel 4 –child 2 &
- dbgen2 –scale 100 –dir /tmp –parallel 4 –child 3 &
- dbgen2 –scale 100 –dir /tmp –parallel 4 –child 4 &
(5)加载数据
在Shark中需要先建表,然后加载数据,加载数据的方式和Hive是相近的。加载数据时候,需要注意使用的分隔符。
注意由于TPC-DS的数据类型在Shark中并不完全适用,所以可以修改数据类型为以下格式。
- drop table customer_address;
- create table customer_address
- (
- ca_address_sk bigint ,
- ca_address_id string ,
- ca_street_number string ,
- ca_street_name string ,
- ca_street_type string ,
- ca_suite_number string ,
- ca_city string ,
- ca_county string ,
- ca_state string ,
- ca_zip string ,
- ca_country string ,
- ca_gmt_offset double ,
- ca_location_type string
- )
- row format delimited fields terminated by '|' lines terminated by '\n' stored as textfile ;
在Shell中执行如下命令加载数据,或者这条命令在SQL中让Shark执行。
- LOAD DATA INPATH 'hdfs://hive01:9000/3t/customer.dat' INTO TABLE customer_address;
(6)通过模板生成查询
query_templates文件夹下有99个查询模板,用户可以到其中查询模板并生成指定的查询。
由于不同厂家的SQL并不是全部遵循ANSI标准。例如“LIMIT”和“BEGIN/COMMIT”,qgen2需要指定方言“dialect”。现在支持几类模板:db2.tpl、netezza.tpl、oracle.tpl、sqlserver.tpl。下面是生成oracle方言,针对100GB数据规模,使用query99模板查询的例子。
- qgen2 –query99.tpl –directory query_templates
- –dialect oracle –scale 100
(7)运行查询
查询的运行依赖于当时正在运行的大数据系统。
Shark执行查询的命令和方式如下。
1)在Shark的Shell中执行,将query的SQL语句复制到Shell执行。
- $ ./bin/shark # Start CLI for interactive session
2)在命令行后追加SQL语句执行查询。
- $ ./bin/shark -e "SELECT * FROM foo" # Run a specific query and exit
3)在命令行后追加文件执行查询。
- $ ./bin/shark -i queries.hql # Run queries from a file
关于其他的高级选项,感兴趣的用户可以通过查看文档了解。
[1] 针对AIX、LINUX、HPUX、NCR和Solaris操作系统。