622
魔獸
高速 OSS 並行導入導出__快速入門_雲數據庫 HybridDB-阿裏雲
雲數據庫HybridDB(ApsaraDB HybridDB)是一種在線MPP大規模並行處理數據倉庫服務。雲數據庫HybridDB基於Greenplum Database開源數據庫項目,並由阿裏雲深度擴展支持OSS存儲、JSON數據類型、HyperLogLog預估分析等功能特性。
在阿裏雲上,支持通過 gpossext 並行裝載數據到 HybridDB 中,也支持並行的把數據導出到 OSS 中。
gpossext 語法
CREATE [READABLE] EXTERNAL TABLE tablename
( columnname datatype [, ...] | LIKE othertable )
LOCATION ('ossprotocol')
FORMAT '...'
[ ENCODING 'encoding' ]
[ LOG ERRORS ...]
CREATE WRITABLE EXTERNAL TABLE table_name
( column_name data_type [, ...] | LIKE other_table )
LOCATION ('ossprotocol')
FORMAT '...'
[ ENCODING 'encoding' ]
[ DISTRIBUTED BY (column, [ ... ] ) | DISTRIBUTED RANDOMLY ]
ossprotocol:
oss://oss_endpoint filepath=[folder/[folder/]...]/file_name
id=userossid key=userosskey bucket=ossbucket
ossprotocol:
oss://oss_endpoint dir=[folder/[folder/]...]/file_name
id=userossid key=userosskey bucket=ossbucket
參數解釋
ossprotocol 整個協議和相關參數描述如下
常用參數
1. 協議名,當然是 oss
2. ossendpoint 參數,是內網訪問oss的地址,也叫 host
3. id oss賬號ID
4. key oss賬號key
5. bucket ossbucket,需要創建 oss 賬號後分配
6. filepath oss 中帶路徑的文件名,需要注意
6.1 文件名包含文件路徑,但不包含 bucket 名
6.2 並行裝載模式要求文件被均勻拆分為多個文件
6.3 文件命名方式為 finame.x,x 要求從 1 開始,且是連續的
6.4 例 filename.1 filename.2 filename.3 ...
6.5 可以被導入的文件有 filename filename.1 filename.2 ...;其中1到N需要是連續的
6.6 為了最大化導入性能,建議拆分文件的個數是導入到的 HybridDB segment 個數的倍數
7. dir oss 中帶路徑的虛擬文件夾,需要注意
7.1 dir指 oss 上的虛擬文件夾,它需要以 / 結尾
7.2 該模式和 filepath 互斥,不能同時指定
7.3 該模式會導入指定虛擬目錄下的所有文件到 HybridDB,但不包括它子目錄和子目錄下的文件
7.4 和 filepath 一樣,該模式也是並行導入的,為了最大化導入性能,每個文件的大小需要盡量的均勻。
7.5 和 filepath 不同,dir 下的文件沒有命名要求
導入模式參數
8. async 是否啟用異步模式裝載數據
8.1 開啟輔助線程從 oss 裝載數據,加速導入性能。默認導入模式是異步模式。
8.2 默認情況下異步模式是打開的,如果需要關掉,可以使用參數 async = false 或 async = f
8.3 異步模式和普通模式比,會消耗更多的硬件資源
導出模式參數
9. 針對導出模式,新增下列兩個參數
9.1 oss_flush_block_size 單詞刷出到 oss 的buffer大小,默認 32 MB,可選範圍 1 到 128 MB
9.2 oss_file_max_size 寫到 oss 的最大文件大小,超出之後會切換到另一個文件再寫。默認 1024 MB,可選範圍 8 到 4000 MB
9.3 上述兩個參數對導入模式無效
10 針對導出模式,需要注意
10.1 WRITABLE 是導出模式外部表的關鍵字,創建外部表時需要明確指明
10.2 導出模式目前隻支持虛擬文件夾的匹配模式,即隻支持 dir 不支持 filepath
10.3 導出模式的 DISTRIBUTED BY 子句可以使 segment 直接把本地數據寫入 oss,不用數據重分布
其他通用參數
11 針對導入模式和導出模式,還有下列容錯相關參數
11.1 oss_connect_timeout 設置鏈接超時,單位秒,默認是10秒
11.2 oss_dns_cache_timeout 設置DNS超時,單位秒,默認是60秒
11.3 oss_speed_limit 控製能容忍的最小速率,默認是1024,即1K
11.4 oss_speed_time 控製能容忍的最長時間,默認是15秒
11.5 如果使用了上述默認值,表示如果連續15秒的傳輸速率小於1K,則超時
11.6 詳細描述,請客參考文章末尾的鏈接
gpossext 的其他參數兼容 HybridDB EXTERNAL TABLE 的原有語法,主要有
1. FORMAT 支持文件格式,支持 text,csv 等
2. ENCODING 文件中數據的編碼格式,如 utf8
3. LOG ERRORS 依然支持容錯模式數據導入,通過製定該子句忽略掉導入中出錯的數據
用例
# 創建 oss 導入外部表
create READABLE external table ossexample
(date text, time text, open float, high float,
low float, volume int)
location('oss://oss-cn-hangzhou.aliyuncs.com
filepath=osstest/example.csv id=XXX
key=XXX bucket=testbucket') FORMAT 'csv'
LOG ERRORS SEGMENT REJECT LIMIT 5;
# 創建 oss 導出外部表
create WRITABLE external table ossexample_exp
(date text, time text, open float, high float,
low float, volume int)
location('oss://oss-cn-hangzhou.aliyuncs.com
dir=osstest/exp/ id=XXX
key=XXX bucket=testbucket') FORMAT 'csv'
DISTRIBUTED BY (date);
# 創建堆表,數據就裝載到這張表中
create table example
(date text, time text, open float,
high float, low float, volume int)
DISTRIBUTED BY (date);
# 數據並行的從 ossexample 裝載到 example 中
insert into example select * from ossexample;
# 數據並行的從 example 導出到 oss
insert into ossexample_exp select * from example;
# 可以看到,每個 segment 都會參與工作。
# 他們並行的從 oss 拉取數據
# 然後通過 Redistribute Motion 分發給對應的 segment.
# 每個 segment 再通過 insert 節點入庫
explain insert into example select * from ossexample;
QUERY PLAN
--------------------------------------------------------------------------------------------------
Insert (slice0; segments: 4) (rows=250000 width=92)
-> Redistribute Motion 4:4 (slice1; segments: 4) (cost=0.00..11000.00 rows=250000 width=92)
Hash Key: ossexample.date
-> External Scan on ossexample (cost=0.00..11000.00 rows=250000 width=92)
(4 rows)
# 可以看到,segment 把本地數據直接導出到 oss ,沒有進行數據重分布
explain insert into ossexample_exp select * from example;
QUERY PLAN
---------------------------------------------------------------
Insert (slice0; segments: 3) (rows=1 width=92)
-> Seq Scan on example (cost=0.00..0.00 rows=1 width=92)
(2 rows)
gpossext 使用注意
gpossext 打開了 oss 到 HybridDB 的數據通道,用戶可以把數據放到廉價的 oss 中,再導入到 HybridDB 中進行分析。使用需要注意
1. gpossext 中除了 ossprotocol,其他的部分和 HybridDB 相同。
2. 數據導入的性能和 HybridDB 集群的資源(CPU IO MEM NET)相關,也和 OSS 相關。
3. 為了保證數據導入的性能 ossendpoint Region 需要匹配 HybridDB 雲上所在 Region,建議 OSS 和 HybridDB 在同一個 Region 以獲得最好的性能。相關信息請參考下麵的鏈接。
錯誤處理
當導入或導出操作出錯時,錯誤日誌會出現下列信息:
code: 出錯請求的HTTP狀態碼
error_code: OSS的錯誤碼
error_msg: OSS的錯誤信息
req_id: 標識該次請求的UUID;當您無法解決問題時,可以憑 req_id 來請求 oss 開發工程師的幫助
請參考文檔末尾的鏈接以了解各類錯誤,超時相關的錯誤可以使用 oss_ext 相關參數處理
參考鏈接
最後更新:2016-12-01 11:08:37
上一篇:
插件管理__快速入門_雲數據庫 HybridDB-阿裏雲
下一篇:
導入MySQL數據__快速入門_雲數據庫 HybridDB-阿裏雲
雲計算市場潛力無限,阿裏雲居然能攬獲頭把交椅?
LogHub數據源__準備數據源_用戶指南_業務實時監控服務 ARMS-阿裏雲
Redis-cli連接__連接實例_快速入門_雲數據庫 Redis 版-阿裏雲
請求結構__調用方式_API使用手冊_消息服務-阿裏雲
Discuz如何存儲遠程附件到OSS__ossftp_常用工具_對象存儲 OSS-阿裏雲
是否可以用代金券支付續費?___代金券_代金券及推薦碼_財務-阿裏雲
手工腳本__腳本編寫_使用手冊_性能測試-阿裏雲
文檔曆史__NAT網關產品簡介_用戶指南_專有網絡 VPC-阿裏雲
LogHub-協同消費組__Getting-Started_日誌服務-阿裏雲
人工智能產業爆發前夜,阿裏雲推異構計算產品家族
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲