您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)OSS Select使用SQL語句選取OSS文件的內(nèi)容,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
對象存儲OSS(Object Storage Service)具有海量、可靠、安全、高性能、低成本的特點(diǎn)。OSS提供標(biāo)準(zhǔn)、低頻、歸檔類型,覆蓋多種數(shù)據(jù)從熱到冷的存儲需求,單個文件的大小從1字節(jié)到48.8TB,可以存儲的文件個數(shù)無限制。OSS已成為互聯(lián)網(wǎng)、企業(yè)級數(shù)據(jù)應(yīng)用的基礎(chǔ)設(shè)施。
通常,獲取對象存儲數(shù)據(jù)的通方式為:獲取整個對象,或按指定的字節(jié)范圍來獲取數(shù)據(jù)。今天,我們重磅推出OSS Select,直接使用簡單的SQL語句,從OSS的文件中選取所需要的內(nèi)容。
OSS Select(公測中)讓開發(fā)者可以直接使用SQL語句,從OSS文件中選取需要的內(nèi)容。
使用OSS Select,只獲取應(yīng)用程序所需的查詢結(jié)果,并支持并發(fā)地分片查詢,會大幅提升程序的性能,通常情況下能有400%的提升。
文件格式:公測期間支持未加密的CSV格式或者有分隔符的UTF8文本文件,參考RFC4180,
公測期間支持標(biāo)準(zhǔn)、低頻類型的Object
支持RangeQuery(公測期間,RangeQuery模式下不支持Use Header Name)
OSS Select公測期間免費(fèi)
后續(xù)阿里云EMR、DataLakeAnalytics、MaxCompute、HybridDB等都會陸續(xù)支持OSS Select
# -*- coding: utf-8 -*- import os import oss2 def select_call_back(consumed_bytes, total_bytes = None): print('Consumed Bytes:' + str(consumed_bytes) + '\n') # 首先初始化AccessKeyId、AccessKeySecret、Endpoint等信息。 # 通過環(huán)境變量獲取,或者把諸如“<你的AccessKeyId>”替換成真實(shí)的AccessKeyId等。 # # 以杭州區(qū)域?yàn)槔珽ndpoint可以是: # http://oss-cn-hangzhou.aliyuncs.com # https://oss-cn-hangzhou.aliyuncs.com # 分別以HTTP、HTTPS協(xié)議訪問。 access_key_id = os.getenv('OSS_TEST_ACCESS_KEY_ID', '<你的AccessKeyId>') access_key_secret = os.getenv('OSS_TEST_ACCESS_KEY_SECRET', '<你的AccessKeySecret>') bucket_name = os.getenv('OSS_TEST_BUCKET', '<你的Bucket>') endpoint = os.getenv('OSS_TEST_ENDPOINT', '<你的訪問域名>') # 確認(rèn)上面的參數(shù)都填寫正確了 for param in (access_key_id, access_key_secret, bucket_name, endpoint): assert '<' not in param, '請?jiān)O(shè)置參數(shù):' + param # 創(chuàng)建Bucket對象,所有Object相關(guān)的接口都可以通過Bucket對象來進(jìn)行 bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name) # csvfile = 'sample.csv' resultfilename = 'python_select.csv' csv_meta_params = {'FileHeaderInfo': 'None', 'RecordDelimiter': '\r\n'} # LineRange(可選參數(shù)):表示指定查詢行的范圍 select_csv_params = {'FileHeaderInfo': 'None', 'LineRange':(100,1000)} csv_header = bucket.get_csv_object_meta(key, csv_meta_params) # 將查詢結(jié)果輸出到文件 result = bucket.select_csv_object_to_file(csvfile, resultfile, "select _1, _3, _4 from ossobject where _4 > 40 and _1 like '%Tom%' ", select_call_back, input_format)
以上是一個簡單的python示例,使用SQL查詢OSS的對象,并將結(jié)果輸出到文件匯總。
除了將查詢結(jié)果輸出到文件,還可以將查詢結(jié)果直接返回
result = bucket.select_csv_object(csvfile, "select * from ossobject where _4 > 40 and _1 like '%Tom%' ", select_call_back, select_csv_params) content_got = b'' for chunk in result: content_got += chunk print(content_got)
查詢結(jié)果:
您可以使用OSS Select來加速您的各類應(yīng)用。OSS Select團(tuán)隊(duì),創(chuàng)建了一個Spark的示例,基于OSS Select,實(shí)現(xiàn) Spark Data Source API。假設(shè),您需要從大量的人員名單中,查詢符合條件的人員信息。比如查詢50歲以上,姓名中包含Tom的目標(biāo)人員。
啟用OSS Select,Spark借助OSS Select僅獲取文件中所需要的數(shù)據(jù);而禁用OSS Select,Spark獲取整個文件
不使用OSS Select,查詢需要78秒(1.3分鐘)。而使用OSS Select,只需要11秒,程序性能提升6倍!
數(shù)量 | 配置 | |
---|---|---|
master | 1 | 4core 8GB |
workers | 2 | 4core 8GB |
export SPARK_MASTER_IP=master export SPARK_WORKER_MEMORY=6g export SPARK_WORKER_CORES=3 export SPARK_WORKER_INSTANCES=1 export SPARK_EXECUTOR_CORES=1 export SPARK_EXECUTOR_MEMORY=2g
CSV數(shù)據(jù)量為7GB。
以上就是OSS Select使用SQL語句選取OSS文件的內(nèi)容,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。