本文介紹通過數據湖分析(DLA)連接LindormDFS的方法,并使用SQL查詢LindormDFS中的數據。
前提條件
云原生多模數據庫 Lindorm實例已開通LindormDFS,具體請參見開通指南。
將專有網絡的IP添加至Lindorm實例的白名單中,具體請參見設置白名單。
已開通DLA Serverless SQL CU版本,具體請參見DLA Presto CU版本快速入門。
說明配置DLA虛擬集群的數據源網絡時,數據源網絡和Lindorm實例使用相同的專有網絡ID。
訪問方式
數據湖分析(Data Lake Analytics,簡稱DLA)支持通過DLA Serverless SQL和DLA Serverless Spark方式訪問LindormDFS。
準備工作
在本地創建新的文本文件
example.txt
,文本內容示例如下:7,8,9
執行如下命令將文本文件上傳至LindormDFS。
hadoop fs -mkdir -p hdfs://${實例ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/p/d=1 hadoop fs -copyFromLocal example.txt hdfs://${實例ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/p/d=1/example.txt
說明由于DLA Serverless SQL訪問不支持高可用方式,所以通過該方式訪問LindormDFS時,需要將上面的地址替換成LindormDFS主名稱節點的host,主備節點可以在hdfs-site配置中查看,查看方法請參見訪問配置生成。
執行如下命令查看數據是否上傳成功。
hadoop fs -ls hdfs://${實例ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/p/d=1
執行結果如下圖表示上傳成功。
操作步驟
登錄DLA控制臺。
在左側導航欄,選擇Serverless Presto>SQL執行。
在編輯框中輸入以下SQL命令,并單擊編輯框上方的同步執行。
CREATE DATABASE `my_lindorm_store_db` WITH DBPROPERTIES ( catalog = 'hive', location = 'hdfs://${實例ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/' )
說明您也可以通過MySQL客戶端或者程序代碼等方式連接DLA,然后執行SQL命令創建庫。創建庫語句的參數說明如下:
CATALOG:取值為hive,表示創建的是hive Schema。
LOCATION:庫所在的目錄。
執行以下創建表的命令。
USE `my_lindorm_store_db`; CREATE EXTERNAL TABLE p ( `a` int, `b` int, `c` int ) partitioned by (d int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS `TEXTFILE` LOCATION 'hdfs://${實例ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/p/';
說明LindormDFS表的參數、表屬性和OSS表大部分都是一樣的。主要的區別如下:
由于網絡連通性的問題,在創建庫、表時不會對目錄內容進行檢查,用戶需要自己保證目錄的正確性。
基于同樣的原因,LindormDFS表不支持auto.create.location屬性。
查詢數據。由于只有CU的計算資源與LindormDFS網絡可以連通,因此所有訪問LindormDFS表的SQL語句都需要指定
hint: /*+pool-selector=your-vc-name*/
,指定后SQL語句會在CU中執行。/*+ pool-selector=test-vc */ alter table p add partition (d=1) location 'hdfs://${實例ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/p/d=1'; Query OK, 0 rows affected (8.63 sec) /*+ pool-selector=test-vc */ select * from p; +------+------+------+------+ | a | b | c | d | +------+------+------+------+ | 7 | 8 | 9 | 1 | +------+------+------+------+ 1 row in set (4.74 sec)
執行結果如下圖:
說明DLA中常用的SQL類型和語法,更多請參見常用SQL。