您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關OSS Select使用SQL語句選取OSS文件的內容,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
對象存儲OSS(Object Storage Service)具有海量、可靠、安全、高性能、低成本的特點。OSS提供標準、低頻、歸檔類型,覆蓋多種數據從熱到冷的存儲需求,單個文件的大小從1字節到48.8TB,可以存儲的文件個數無限制。OSS已成為互聯網、企業級數據應用的基礎設施。
通常,獲取對象存儲數據的通方式為:獲取整個對象,或按指定的字節范圍來獲取數據。今天,我們重磅推出OSS Select,直接使用簡單的SQL語句,從OSS的文件中選取所需要的內容。
OSS Select(公測中)讓開發者可以直接使用SQL語句,從OSS文件中選取需要的內容。
使用OSS Select,只獲取應用程序所需的查詢結果,并支持并發地分片查詢,會大幅提升程序的性能,通常情況下能有400%的提升。
文件格式:公測期間支持未加密的CSV格式或者有分隔符的UTF8文本文件,參考RFC4180,
公測期間支持標準、低頻類型的Object
支持RangeQuery(公測期間,RangeQuery模式下不支持Use Header Name)
OSS Select公測期間免費
后續阿里云EMR、DataLakeAnalytics、MaxCompute、HybridDB等都會陸續支持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等信息。 # 通過環境變量獲取,或者把諸如“<你的AccessKeyId>”替換成真實的AccessKeyId等。 # # 以杭州區域為例,Endpoint可以是: # http://oss-cn-hangzhou.aliyuncs.com # https://oss-cn-hangzhou.aliyuncs.com # 分別以HTTP、HTTPS協議訪問。 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', '<你的訪問域名>') # 確認上面的參數都填寫正確了 for param in (access_key_id, access_key_secret, bucket_name, endpoint): assert '<' not in param, '請設置參數:' + param # 創建Bucket對象,所有Object相關的接口都可以通過Bucket對象來進行 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(可選參數):表示指定查詢行的范圍 select_csv_params = {'FileHeaderInfo': 'None', 'LineRange':(100,1000)} csv_header = bucket.get_csv_object_meta(key, csv_meta_params) # 將查詢結果輸出到文件 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的對象,并將結果輸出到文件匯總。
除了將查詢結果輸出到文件,還可以將查詢結果直接返回
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)
查詢結果:
您可以使用OSS Select來加速您的各類應用。OSS Select團隊,創建了一個Spark的示例,基于OSS Select,實現 Spark Data Source API。假設,您需要從大量的人員名單中,查詢符合條件的人員信息。比如查詢50歲以上,姓名中包含Tom的目標人員。
啟用OSS Select,Spark借助OSS Select僅獲取文件中所需要的數據;而禁用OSS Select,Spark獲取整個文件
不使用OSS Select,查詢需要78秒(1.3分鐘)。而使用OSS Select,只需要11秒,程序性能提升6倍!
數量 | 配置 | |
---|---|---|
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數據量為7GB。
以上就是OSS Select使用SQL語句選取OSS文件的內容,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。