0. Data Lake Analytics(DLA)简介
关于Data Lake的概念,更多阅读可以参考:
https://en.wikipedia.org/wiki/Data_lake
以及AWS和Azure关于Data Lake的解读:
https://amazonaws-china.com/big-data/datalakes-and-analytics/what-is-a-data-lake/
https://azure.microsoft.com/en-us/solutions/data-lake/
终于,阿里云现在也有了自己的数据湖分析产品:https://www.aliyun.com/product/datalakeanalytics
可以点击申请使用(目前公测阶段还属于邀测模式,我们会尽快审批申请),体验本教程的TPC-H CSV数据格式的数据分析之旅。
产品文档:https://help.aliyun.com/product/70174.html
1. 开通Data Lake Analytics与OSS服务
如果您已经开通,可以跳过该步骤。如果没有开通,可以参考:https://help.aliyun.com/document_detail/70386.html
进行产品开通服务申请。
2. 下载TPC-H测试数据集
可以从这下载TPC-H 100MB的数据集:
https://public-datasets-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/tpch_100m_data.zip
3. 上传数据文件到OSS
登录阿里云官网的OSS控制台:https://oss.console.aliyun.com/overview
规划您要使用的OSS bucket,创建或选择好后,点击“文件管理”,因为有8个数据文件,为每个数据文件创建对应的文件目录:
创建好8个目录如下:
点击进入目录,上传相应的数据文件,例如,customer目录,则上传customer.tbl文件。
上传好后,如下图。然后,依次把其他7个数据文件也上传到对应的目录下。
至此,8个数据文件都上传到了您的OSS bucket中:
oss://xxx/tpch_100m/customer/customer.tbl
oss://xxx/tpch_100m/lineitem/lineitem.tbl
oss://xxx/tpch_100m/nation/nation.tbl
oss://xxx/tpch_100m/orders/orders.tbl
oss://xxx/tpch_100m/part/part.tbl
oss://xxx/tpch_100m/partsupp/partsupp.tbl
oss://xxx/tpch_100m/region/region.tbl
oss://xxx/tpch_100m/supplier/supplier.tbl
4. 登录Data Lake Analytics控制台
https://openanalytics.console.aliyun.com/
点击“登录数据库”,输入开通服务时分配的用户名和密码,登录Data Lake Analytics控制台。
5. 创建Schema和Table
输入创建SCHEMA的语句,点击“同步执行”。
CREATE SCHEMA tpch_100m with DBPROPERTIES(
LOCATION = 'oss://test-bucket-julian-1/tpch_100m/',
catalog='oss'
);
(注意:目前在同一个阿里云region,Data Lake Analytics的schema名全局唯一,建议schema名尽量根据业务定义,已有重名schema,在创建时会提示报错,则请换一个schema名字。)
Schema创建好后,在“数据库”的下拉框中,选择刚刚创建的schema。然后在SQL文本框中输入建表语句,点击同步执行。
建表语句语法参考:https://help.aliyun.com/document_detail/72006.html
TPC-H对应的8个表的建表语句如下,分别贴入文档框中执行(LOCATION子句中的数据文件位置请根据您的实际OSS bucket目录相应修改)。(注意:目前控制台中还不支持多个SQL语句执行,请单条语句执行。)
CREATE EXTERNAL TABLE nation (
N_NATIONKEY INT,
N_NAME STRING,
N_ID STRING,
N_REGIONKEY INT,
N_COMMENT STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
STORED AS TEXTFILE
LOCATION 'oss://test-bucket-julian-1/tpch_100m/nation';
CREATE EXTERNAL TABLE lineitem (
L_ORDERKEY INT,
L_PARTKEY INT,
L_SUPPKEY INT,
L_LINENUMBER INT,
L_QUANTITY DOUBLE,
L_EXTENDEDPRICE DOUBLE,
L_DISCOUNT DOUBLE,
L_TAX DOUBLE,
L_RETURNFLAG STRING,
L_LINESTATUS STRING,
L_SHIPDATE DATE,
L_COMMITDATE DATE,
L_RECEIPTDATE DATE,
L_SHIPINSTRUCT STRING,
L_SHIPMODE STRING,
L_COMMENT STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
STORED AS TEXTFILE
LOCATION 'oss://test-bucket-julian-1/tpch_100m/lineitem';
CREATE EXTERNAL TABLE orders (
O_ORDERKEY INT,
O_CUSTKEY INT,
O_ORDERSTATUS STRING,
O_TOTALPRICE DOUBLE,
O_