溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

OSS Select使用SQL語句選取OSS文件的內(nèi)容

發(fā)布時(shí)間:2022-01-05 12:00:01 來源:億速云 閱讀:245 作者:柒染 欄目:云計(jì)算

本篇文章給大家分享的是有關(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介紹

使用SQL選取OSS文件中的內(nèi)容

OSS Select(公測中)讓開發(fā)者可以直接使用SQL語句,從OSS文件中選取需要的內(nèi)容。
OSS Select使用SQL語句選取OSS文件的內(nèi)容
使用OSS Select,只獲取應(yīng)用程序所需的查詢結(jié)果,并支持并發(fā)地分片查詢,會大幅提升程序的性能,通常情況下能有400%的提升。
OSS Select使用SQL語句選取OSS文件的內(nèi)容

公測說明:

  • 文件格式:公測期間支持未加密的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

使用示例(python)

# -*- 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使用SQL語句選取OSS文件的內(nèi)容

測試示例

您可以使用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提升應(yīng)用程序性能

  • 啟用OSS Select,Spark借助OSS Select僅獲取文件中所需要的數(shù)據(jù);而禁用OSS Select,Spark獲取整個文件
    OSS Select使用SQL語句選取OSS文件的內(nèi)容

  • 不使用OSS Select,查詢需要78秒(1.3分鐘)。而使用OSS Select,只需要11秒,程序性能提升6倍! 
    OSS Select使用SQL語句選取OSS文件的內(nèi)容

測試配置說明:

Spark測試集群配置:

數(shù)量配置
master14core 8GB
workers24core 8GB

Spark配置:

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

數(shù)據(jù)量:

CSV數(shù)據(jù)量為7GB。

以上就是OSS Select使用SQL語句選取OSS文件的內(nèi)容,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(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)容。

AI