背景介紹
阿裡雲資料湖分析(DLA)産品提供一站式的資料湖分析與計算服務。DLA Presto可以實作高效的線上分析,主要面向使用者探索式分析、報表以及輕量ETL的場景。
DLA Presto已經支援比較多的資料源,但對于使用者自建的大資料叢集(它中繼資料存儲在HiveMetastore,資料存儲在HDFS),有時也希望和OSS、RDS、AnalyticsDB、MaxCompute、TableStore、ElasticSearch等資料關聯查詢,但卻較難實作。是以DLA近期釋出了支援通路使用者自建HiveMetastore的功能,可以通過DLA分析自建HiveMetastore的資料。此外還能通過DLA Presto加速查詢性能。
操作步驟
1. 準備資料。
- 在自建的HiveMetastore中建立庫,表,并插入一條記錄。
CREATE DATABASE testdb;
CREATE EXTERNAL TABLE if not exists testdb.testTable(
id int,
name string);
insert into testdb.testTable(id, name) values (1, "jack");
2.
開通DLA Presto CU版3.
綁定資料源網絡。注意這裡綁定的資料源網絡和HiveMetastore要在同一個vpc下面,確定網絡可以聯通。
4. 連接配接DLA,建立庫:
CREATE DATABASE `dladb`
WITH DBPROPERTIES (
catalog = 'customer_hive',
database = 'testdb',
location = '172.16.199.34:9083',
vpc_id = 'xxx',
hdfs_properties = 'fs.defaultFS=hdfs://172.16.199.41:9000'
)
說明 您也可以通過MySQL用戶端或者程式代碼等方式連結DLA,然後執行SQL指令建立庫。參數說明:
- catalog 固定為customer_hive,表示資料源是使用者的HiveMetastore資料。
- database 指定使用者HiveMetastore的HiveServer中的庫名。
- location 指定使用者HiveMetastore的HiveServer位址。
- vpc_id 指定HiveMetastore所在的vpc。
- hdfs_properties 指定HiveMetastore中預設的hdfs配置。包括兩種情況:
-
- 非HA的HDFS:
hdfs_properties='fs.defaultFS=hdfs://172.16.199.41:9000'
注釋,這裡的hdfs的配置為自建HDFS的位址,需要指定為IP或域名,不能為hostname。
-
- HA的HDFS:
hdfs_properties='fs.defaultFS=hdfs://emr-cluster;dfs.nameservices=emr-cluster;dfs.client.failover.proxy.provider.emr-cluster=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider;dfs.ha.namenodes.emr-cluster=nn1,nn2;dfs.nameservice.id=emr-cluster;dfs.namenode.rpc-address.emr-cluster.nn1=172.16.199.34:8020;dfs.namenode.rpc-address.emr-cluster.nn2=172.16.199.35:8020'
注釋,這裡的hdfs的配置為自建HA HDFS的配置,需要指定為IP或域名,不能為hostname。
- 建表,可以通過create table或msck兩種方式修表。
- 建立表映射
CREATE EXTERNAL TABLE if not exists dladb.testTable(
id int,
name string);
說明 表名testTable需要和HiveMetastore中對于的db的表名相同。
- msck建立表映射
msck repair database dladb;
- 查詢表
查詢或通路資料由于隻有CU的計算資源和HiveMetastore網絡可以聯通,是以所有通路HiveMetastore表的SQL語句都需要指定
hint: /*+cluster=your-vc-name*/
,這樣SQL就會在CU中執行。
示例:
mysql> /*+ cluster=vc-test */ select * from dladb.testTable;
+------+------+
| id | name |
+------+------+
| 1 | jack |
+------+------+
1 row in set (1.74 sec)
更多資訊可參考DLA幫助文檔。
使用DLA Presto的優勢
DLA Presto(相容Presto)的目标是提供比開源自建更高的成本效益、開箱即用的體驗、友善的資料攝入、MySQL生态帶來的簡單易用、内置各種優化的資料湖分析計算服務。使用者可以先通過使用Serverless版本低成本試用,然後根據使用頻率的高低、對資源是否有強獨占的需求來決定生産環境使用Serverless版本還是CU版本。DLA Presto還在不斷發展中,目前規劃中的一些特性包含:
- 按照時間段或者工作負載進行自動擴縮容,幫助使用者節省成本。
- 支援檔案緩存機制,提升查詢性能
- 内置大資料最佳實踐,自動攔截Bad SQL
歡迎大家關注我們的釘釘群擷取最新的資訊:
