摘要: OSS重磅推出OSS Select功能,能够直接使用简单的SQL语句,从OSS的文件中选取所须要的内容html
对象存储OSS(Object Storage Service)具备海量、可靠、安全、高性能、低成本的特色。OSS提供标准、低频、归档类型,覆盖多种数据从热到冷的存储需求,单个文件的大小从1字节到48.8TB,能够存储的文件个数无限制。OSS已成为互联网、企业级数据应用的基础设施。
一般,获取对象存储数据的通方式为:获取整个对象,或按指定的字节范围来获取数据。今天,咱们重磅推出OSS Select,直接使用简单的SQL语句,从OSS的文件中选取所须要的内容。python
OSS Select(公测中)让开发者能够直接使用SQL语句,从OSS文件中选取须要的内容。
使用OSS Select,只获取应用程序所需的查询结果,并支持并发地分片查询,会大幅提高程序的性能,一般状况下能有400%的提高。
安全
# -*- 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的目标人员。阿里云
数量 | 配置 | |
---|---|---|
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。加密
原文连接spa
本文为云栖社区原创内容,未经容许不得转载。code