Hologres基于翻新的HSAP架构,能够将您原先数仓架构中的OLAP零碎(Greenplum、Presto、Impala、ClickHouse)、KV数据库/Serving零碎(HBase、Redis)对立在一个大数据计算引擎中,并提供疾速的离线实时一体化剖析能力。
Hologres 5000CU时,20GB存储收费试用, 返回试用>>产品外围劣势:1、简化数仓架构,缩小数据搬运与多处保护老本
2、实时查问性能强,刷新TPC-H 30000GB世界纪录
3、交融湖仓查问,0 ETL导入离线MaxCompute数据
Hologres应用教程简介基于MaxCompute中TPC-H数据集数据和GitHub公开事件数据,在阿里云实时数仓Hologres上创立Hologres的数据库、内部表、外部表、导入数据至外部表中以及应用Hologres别离查问外部表和内部表中数据的指引。Hologres在查问数据方面具备极速响应的劣势。
筹备环境和资源开始教程前,请按以下步骤筹备环境和资源:
已创立专有网络(VPC)和专有网络交换机,详情请参见创立专有网络和交换机。拜访阿里云收费试用。单击页面右上方的登录/注册按钮,并依据页面提醒实现账号登录(已有阿里云账号)、账号注册(尚无阿里云账号)或实名认证(依据试用产品要求实现集体实名认证或企业实名认证)。胜利登录后,在产品类别下抉择大数据计算 > 数据计算与剖析,在实时数仓Hologres卡片上,单击立刻试用。在弹出的试用实时数仓Hologres产品的面板上实现参数信息配置。本试用教程以表格中的参数信息为例,未提及参数放弃默认值。参数示例值地区华东1(杭州)实例类型通用型计算资源8核32GB(计算节点数量:1)专有网络抉择步骤1中创立的VPC。专有网络交换机抉择步骤1中创立的交换机。实例名称hologres_test资源组默认资源组勾选服务协定后,单击立刻试用,并依据页面提醒实现试用申请。 单击返回控制台,开启试用体验。创立数据库通过Hologres疾速创立数据库,用于后续寄存示例数据进行查问应用。
登录Hologres治理控制台,单击左侧实例列表。在实例列表页面,单击对应实例名称。在实例详情页左侧导航栏,单击数据库治理。在DB受权页面,单击右上角新增数据库。在新增数据库对话框,配置如下参数。题目阐明实例名抉择在哪个Hologres实例上创立数据库。默认展现以后已登录实例的名称,您也能够在下拉框中抉择其余Hologres实例。数据库名称本示例数据库名称设置为holo_tutorial。简略权限策略您能够为创立的数据库抉择一种权限策略。更多对于权限策略的阐明,请参见:- SPM:简略权限模型,该权限模型受权是以DB为粒度,划分admin(管理员)、developer(开发者)、writer(读写者)以及viewer(分析师)四种角色,您能够通过大量的权限治理函数,即可对DB中的对象进行不便且平安的权限治理。- SLPM:基于Schema级别的简略权限模型,该权限模型以Schema为粒度,划分 <db>.admin(DB管理员)、<db>.<schema>.developer(开发者)、<db>.<schema>.writer(读写者)以及 <db>.<schema>.viewer(分析师),相比于简略权限模型更为细粒度。- 专家:Hologres兼容PostgreSQL,应用与Postgres完全一致的权限零碎。单击确认。创立表数据库创立胜利后,您需在数据库中创立对应的表。
登录数据库。在DB受权页面的顶部菜单栏,单击元数据管理。在元数据管理页面,双击左侧目录树中已创立胜利的数据库名称,单击确认。新建内部表。在SQL编辑器页面,单击左上角的图标。新增应用TPC-H数据集数据的内部表,TPC-H数据援用自TPC,更多信息请参见TPC。 在新增的长期Query查问页面,抉择已创立的实例名和数据库后,请您在SQL查问的编辑框输出示例代码,单击运行。 示例SQL语句用来创立一个映射到MaxCompute公共空间MAXCOMPUTE_PUBLIC_DATA中odps_customer_10g、odps_lineitem_10g等表的内部表,用于后续查问。DROP FOREIGN TABLE IF EXISTS odps_customer_10g;DROP FOREIGN TABLE IF EXISTS odps_lineitem_10g;DROP FOREIGN TABLE IF EXISTS odps_nation_10g;DROP FOREIGN TABLE IF EXISTS odps_orders_10g;DROP FOREIGN TABLE IF EXISTS odps_part_10g;DROP FOREIGN TABLE IF EXISTS odps_partsupp_10g;DROP FOREIGN TABLE IF EXISTS odps_region_10g;DROP FOREIGN TABLE IF EXISTS odps_supplier_10g;IMPORT FOREIGN SCHEMA "MAXCOMPUTE_PUBLIC_DATA#default" LIMIT to( odps_customer_10g, odps_lineitem_10g, odps_nation_10g, odps_orders_10g, odps_part_10g, odps_partsupp_10g, odps_region_10g, odps_supplier_10g) FROM SERVER odps_server INTO public OPTIONS(if_table_exist 'error',if_unsupported_type 'error');新增应用GitHub公开事件数据的内部表,数据援用自GitHub,更多信息请参见基于GitHub公开事件数据集的离线实时一体化实际。 单击左上角的图标,在新增的长期Query查问页面,抉择已创立的实例名和数据库后,请您在SQL查问的编辑框输出示例代码,单击运行。 示例SQL语句用来创立一个映射到MaxCompute公共空间MAXCOMPUTE_PUBLIC_DATA中github_eventsSchema下名为dwd_github_events_odps的内部表,用于后续查问。DROP FOREIGN TABLE IF EXISTS dwd_github_events_odps;IMPORT FOREIGN SCHEMA "MAXCOMPUTE_PUBLIC_DATA#github_events" LIMIT to( dwd_github_events_odps) FROM SERVER odps_server INTO public OPTIONS(if_table_exist 'error',if_unsupported_type 'error');新建外部表。在SQL编辑器页面,单击左上角的图标。新建应用TPC-H数据集数据的外部表。 在新增的长期Query查问页面,抉择已创立的实例名和数据库后,请您在SQL查问的编辑框输出如下语句,单击运行。 示例SQL语句用来创立名称别离为LINEITEM、ORDERS、PARTSUPP、PART、CUSTOMER、SUPPLIER、NATION和REGION的表,用于后续存储数据。DROP TABLE IF EXISTS LINEITEM;BEGIN;CREATE TABLE LINEITEM( L_ORDERKEY BIGINT NOT NULL, L_PARTKEY INT NOT NULL, L_SUPPKEY INT NOT NULL, L_LINENUMBER INT NOT NULL, L_QUANTITY DECIMAL(15,2) NOT NULL, L_EXTENDEDPRICE DECIMAL(15,2) NOT NULL, L_DISCOUNT DECIMAL(15,2) NOT NULL, L_TAX DECIMAL(15,2) NOT NULL, L_RETURNFLAG TEXT NOT NULL, L_LINESTATUS TEXT NOT NULL, L_SHIPDATE TIMESTAMPTZ NOT NULL, L_COMMITDATE TIMESTAMPTZ NOT NULL, L_RECEIPTDATE TIMESTAMPTZ NOT NULL, L_SHIPINSTRUCT TEXT NOT NULL, L_SHIPMODE TEXT NOT NULL, L_COMMENT TEXT NOT NULL, PRIMARY KEY (L_ORDERKEY,L_LINENUMBER));CALL set_table_property('LINEITEM', 'clustering_key', 'L_SHIPDATE,L_ORDERKEY');CALL set_table_property('LINEITEM', 'segment_key', 'L_SHIPDATE');CALL set_table_property('LINEITEM', 'distribution_key', 'L_ORDERKEY');CALL set_table_property('LINEITEM', 'bitmap_columns', 'L_ORDERKEY,L_PARTKEY,L_SUPPKEY,L_LINENUMBER,L_RETURNFLAG,L_LINESTATUS,L_SHIPINSTRUCT,L_SHIPMODE,L_COMMENT');CALL set_table_property('LINEITEM', 'dictionary_encoding_columns', 'L_RETURNFLAG,L_LINESTATUS,L_SHIPINSTRUCT,L_SHIPMODE,L_COMMENT');CALL set_table_property('LINEITEM', 'time_to_live_in_seconds', '31536000');COMMIT;DROP TABLE IF EXISTS ORDERS;BEGIN;CREATE TABLE ORDERS( O_ORDERKEY BIGINT NOT NULL PRIMARY KEY, O_CUSTKEY INT NOT NULL, O_ORDERSTATUS TEXT NOT NULL, O_TOTALPRICE DECIMAL(15,2) NOT NULL, O_ORDERDATE timestamptz NOT NULL, O_ORDERPRIORITY TEXT NOT NULL, O_CLERK TEXT NOT NULL, O_SHIPPRIORITY INT NOT NULL, O_COMMENT TEXT NOT NULL);CALL set_table_property('ORDERS', 'segment_key', 'O_ORDERDATE');CALL set_table_property('ORDERS', 'distribution_key', 'O_ORDERKEY');CALL set_table_property('ORDERS', 'bitmap_columns', 'O_ORDERKEY,O_CUSTKEY,O_ORDERSTATUS,O_ORDERPRIORITY,O_CLERK,O_SHIPPRIORITY,O_COMMENT');CALL set_table_property('ORDERS', 'dictionary_encoding_columns', 'O_ORDERSTATUS,O_ORDERPRIORITY,O_CLERK,O_COMMENT');CALL set_table_property('ORDERS', 'time_to_live_in_seconds', '31536000');COMMIT;DROP TABLE IF EXISTS PARTSUPP;BEGIN;CREATE TABLE PARTSUPP( PS_PARTKEY INT NOT NULL, PS_SUPPKEY INT NOT NULL, PS_AVAILQTY INT NOT NULL, PS_SUPPLYCOST DECIMAL(15,2) NOT NULL, PS_COMMENT TEXT NOT NULL, PRIMARY KEY(PS_PARTKEY,PS_SUPPKEY));CALL set_table_property('PARTSUPP', 'distribution_key', 'PS_PARTKEY');CALL set_table_property('PARTSUPP', 'colocate_with', 'LINEITEM');CALL set_table_property('PARTSUPP', 'bitmap_columns', 'PS_PARTKEY,PS_SUPPKEY,PS_AVAILQTY,PS_COMMENT');CALL set_table_property('PARTSUPP', 'dictionary_encoding_columns', 'PS_COMMENT');CALL set_table_property('PARTSUPP', 'time_to_live_in_seconds', '31536000');COMMIT;DROP TABLE IF EXISTS PART;BEGIN;CREATE TABLE PART( P_PARTKEY INT NOT NULL PRIMARY KEY, P_NAME TEXT NOT NULL, P_MFGR TEXT NOT NULL, P_BRAND TEXT NOT NULL, P_TYPE TEXT NOT NULL, P_SIZE INT NOT NULL, P_CONTAINER TEXT NOT NULL, P_RETAILPRICE DECIMAL(15,2) NOT NULL, P_COMMENT TEXT NOT NULL);CALL set_table_property('PART', 'distribution_key', 'P_PARTKEY');CALL set_table_property('PART', 'bitmap_columns', 'P_PARTKEY,P_SIZE,P_NAME,P_MFGR,P_BRAND,P_TYPE,P_CONTAINER,P_COMMENT');CALL set_table_property('PART', 'dictionary_encoding_columns', 'P_NAME,P_MFGR,P_BRAND,P_TYPE,P_CONTAINER,P_COMMENT');CALL set_table_property('PART', 'time_to_live_in_seconds', '31536000');COMMIT;DROP TABLE IF EXISTS CUSTOMER;BEGIN;CREATE TABLE CUSTOMER( C_CUSTKEY INT NOT NULL PRIMARY KEY, C_NAME TEXT NOT NULL, C_ADDRESS TEXT NOT NULL, C_NATIONKEY INT NOT NULL, C_PHONE TEXT NOT NULL, C_ACCTBAL DECIMAL(15,2) NOT NULL, C_MKTSEGMENT TEXT NOT NULL, C_COMMENT TEXT NOT NULL);CALL set_table_property('CUSTOMER', 'distribution_key', 'C_CUSTKEY');CALL set_table_property('CUSTOMER', 'bitmap_columns', 'C_CUSTKEY,C_NATIONKEY,C_NAME,C_ADDRESS,C_PHONE,C_MKTSEGMENT,C_COMMENT');CALL set_table_property('CUSTOMER', 'dictionary_encoding_columns', 'C_NAME,C_ADDRESS,C_PHONE,C_MKTSEGMENT,C_COMMENT');CALL set_table_property('CUSTOMER', 'time_to_live_in_seconds', '31536000');COMMIT;DROP TABLE IF EXISTS SUPPLIER;BEGIN;CREATE TABLE SUPPLIER( S_SUPPKEY INT NOT NULL PRIMARY KEY, S_NAME TEXT NOT NULL, S_ADDRESS TEXT NOT NULL, S_NATIONKEY INT NOT NULL, S_PHONE TEXT NOT NULL, S_ACCTBAL DECIMAL(15,2) NOT NULL, S_COMMENT TEXT NOT NULL);CALL set_table_property('SUPPLIER', 'distribution_key', 'S_SUPPKEY');CALL set_table_property('SUPPLIER', 'bitmap_columns', 'S_SUPPKEY,S_NAME,S_ADDRESS,S_NATIONKEY,S_PHONE,S_COMMENT');CALL set_table_property('SUPPLIER', 'dictionary_encoding_columns', 'S_NAME,S_ADDRESS,S_PHONE,S_COMMENT');CALL set_table_property('SUPPLIER', 'time_to_live_in_seconds', '31536000');COMMIT;DROP TABLE IF EXISTS NATION;BEGIN;CREATE TABLE NATION( N_NATIONKEY INT NOT NULL PRIMARY KEY, N_NAME text NOT NULL, N_REGIONKEY INT NOT NULL, N_COMMENT text NOT NULL);CALL set_table_property('NATION', 'distribution_key', 'N_NATIONKEY');CALL set_table_property('NATION', 'bitmap_columns', 'N_NATIONKEY,N_NAME,N_REGIONKEY,N_COMMENT');CALL set_table_property('NATION', 'dictionary_encoding_columns', 'N_NAME,N_COMMENT');CALL set_table_property('NATION', 'time_to_live_in_seconds', '31536000');COMMIT;DROP TABLE IF EXISTS REGION;BEGIN;CREATE TABLE REGION( R_REGIONKEY INT NOT NULL PRIMARY KEY, R_NAME TEXT NOT NULL, R_COMMENT TEXT);CALL set_table_property('REGION', 'distribution_key', 'R_REGIONKEY');CALL set_table_property('REGION', 'bitmap_columns', 'R_REGIONKEY,R_NAME,R_COMMENT');CALL set_table_property('REGION', 'dictionary_encoding_columns', 'R_NAME,R_COMMENT');CALL set_table_property('REGION', 'time_to_live_in_seconds', '31536000');COMMIT;新增应用GitHub公开事件数据的外部表。 单击左上角的图标,在新增的长期Query查问页面,抉择已创立的实例名和数据库后,请您在SQL查问的编辑框输出示例代码,单击运行。 示例SQL语句用来创立名称为gh_event_data的外部表,并设置distribution_key、event_time_column、clustering_key的表属性,用于后续数据导入和高性能查问。DROP TABLE IF EXISTS gh_event_data;BEGIN;CREATE TABLE gh_event_data ( id bigint, actor_id bigint, actor_login text, repo_id bigint, repo_name text, org_id bigint, org_login text, type text, created_at timestamp with time zone NOT NULL, action text, iss_or_pr_id bigint, number bigint, comment_id bigint, commit_id text, member_id bigint, rev_or_push_or_rel_id bigint, ref text, ref_type text, state text, author_association text, language text, merged boolean, merged_at timestamp with time zone, additions bigint, deletions bigint, changed_files bigint, push_size bigint, push_distinct_size bigint, hr text, month text, year text, ds text);CALL set_table_property('public.gh_event_data', 'distribution_key', 'id');CALL set_table_property('public.gh_event_data', 'event_time_column', 'created_at');CALL set_table_property('public.gh_event_data', 'clustering_key', 'created_at');COMMIT;导入示例数据外部表创立胜利后,能够通过以下步骤将数据导入Hologres外部表中。内部表在Hologres中不存储数据,只进行字段映射。通过内部表您能够应用Hologres间接调用存储于MaxCompute公共空间MAXCOMPUTE_PUBLIC_DATA的数据。
...