MaxCompute支持通過外部表關聯OSS,進行數據輸出。然而,由於MaxCompute外部表的目錄結構比較特殊,無法使用MaxCompute以外的工具對OSS上的文件做進一步的分析,限制了外部表的使用場景。因此,DLA最近支持了分析MaxCompute外部表數據文件的功能,藉助DLA強大的生態,可以方便地對MaxCompute外部表進行分析,並能夠和其他數據源做聯合查詢。
本文通過一個簡單的例子介紹如何使用這個功能。
準備工作:創建MaxCompute外部表並寫入數據
進入MaxCompute工作空間,新建一個ODPS SQL節點,在其中執行如下語句創建OSS外表:
CREATE EXTERNAL TABLE parquet
(
a int,
b int
)
STORED AS PARQUET
LOCATION 'oss://${accessKeyId}:${accessKeySecret}@${endpoint}/${bucket}/${userPath}/';
關於創建外部表語法的更多信息可參考MaxCompute文檔。
建表之後,我們可以執行如下語句向其中寫入幾條測試數據:
insert into parquet values(1,1);
insert into parquet values(2,2);
執行查詢,我們可以看到數據已經寫入到外表中了:
使用DLA分析MaxCompute外部表
首先創建一個OSS Schema:
CREATE SCHEMA dla_oss_db with DBPROPERTIES(
catalog='oss',
location 'oss://${bucket}/${userPath}/'
)
創建表:
CREATE EXTERNAL TABLE odps_parquet (
`a` int,
`b` int
)
STORED AS PARQUET
LOCATION 'oss://${bucket}/${userPath}/'
TBLPROPERTIES (
'directory.odps' = 'true'
);
在讀取MaxCompute外部表時,和其他OSS文件不同的是多了一個表屬性'directory.odps' = 'true',這表示表的目錄是按照MaxCompute外部表的格式來組織的。
執行查詢:
關於我們
數據湖分析Data Lake Analytics簡介
歡迎大家使用數據湖分析(DLA),DLA不僅僅便宜,且快,且方便,專為阿里雲數據湖分析方案而生
- 支持自建、託管RDS、NoSQL、OSS(JSON、CSV、Parquet等格式)多種數據源分析
- 支持按量 按照掃描量 的計費方式,准入門檻0元,提供的Serverless的彈性服務為按需收費,不需要購買固定的資源,完全契合業務潮汐帶來的資源波動,滿足彈性的分析需求,同時極大地降低了運維成本和使用成本
- 平臺底層託管大集群且自動彈性,在一定數據量情況下,分析性能比自建小集群高出400%
- 支持一鍵 把 MySQL、PG、SqlServer、PolarDb數據庫 拖到DLA,再分析,解決原MySQL不敢分析的問題。 DLA 分析性能TPC-H 10G情況 比原MySQL 8c16g 等高出10倍,數據量越大,MySQL性能越差,在1TB數據量下,原MySQL基本跑不出來
- 產品文檔:https://www.aliyun.com/product/datalakeanalytics
- 幫助文檔:https://help.aliyun.com/document_detail/70378.html
- MySQL&PG&SqlServer一鍵同步數據到DLA:https://help.aliyun.com/document_detail/126559.html
- 新客戶1元試用:https://common-buy.aliyun.com/?commodityCode=openanalytics_post