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_nameid=userossid key=userosskey bucket=ossbucketossprotocol:oss://oss_endpoint dir=[folder/[folder/]...]/file_nameid=userossid key=userosskey bucket=ossbucket
參數解釋
ossprotocol 整個協議和相關參數描述如下
常用參數
1. 協議名,當然是 oss2. ossendpoint 參數,是內網訪問oss的地址,也叫 host3. id oss賬號ID4. key oss賬號key5. 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 = f8.3 異步模式和普通模式比,會消耗更多的硬件資源
導出模式參數
9. 針對導出模式,新增下列兩個參數9.1 oss_flush_block_size 單詞刷出到 oss 的buffer大小,默認 32 MB,可選範圍 1 到 128 MB9.2 oss_file_max_size 寫到 oss 的最大文件大小,超出之後會切換到另一個文件再寫。默認 1024 MB,可選範圍 8 到 4000 MB9.3 上述兩個參數對導入模式無效10 針對導出模式,需要注意10.1 WRITABLE 是導出模式外部表的關鍵字,創建外部表時需要明確指明10.2 導出模式目前隻支持虛擬文件夾的匹配模式,即隻支持 dir 不支持 filepath10.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,即1K11.4 oss_speed_time 控製能容忍的最長時間,默認是15秒11.5 如果使用了上述默認值,表示如果連續15秒的傳輸速率小於1K,則超時11.6 詳細描述,請客參考文章末尾的鏈接
gpossext 的其他參數兼容 HybridDB EXTERNAL TABLE 的原有語法,主要有
1. FORMAT 支持文件格式,支持 text,csv 等2. ENCODING 文件中數據的編碼格式,如 utf83. 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.comfilepath=osstest/example.csv id=XXXkey=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.comdir=osstest/exp/ id=XXXkey=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 導出到 ossinsert 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-阿裏雲