OSS重磅推出OSS Select——使用SQL选取文件的内容【免费公测中】

摘要: OSS重磅推出OSS Select功能,可以直接使用简单的SQL语句,从OSS的文件中选取所需要的内容

对象存储OSS(Object Storage Service)具有海量、可靠、安全、高性能、低成本的特点。OSS提供标准、低频、归档类型,覆盖多种数据从热到冷的存储需求,单个文件的大小从1字节到48.8TB,可以存储的文件个数无限制。OSS已成为互联网、企业级数据应用的基础设施。
通常,获取对象存储数据的通方式为:获取整个对象,或按指定的字节范围来获取数据。今天,我们重磅推出OSS Select,直接使用简单的SQL语句,从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

使用示例(python)

# -*- coding: utf-8 -*-import osimport oss2def 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提升应用程序性能

  • 启用OSS Select,Spark借助OSS Select仅获取文件中所需要的数据;而禁用OSS Select,Spark获取整个文件
  • 不使用OSS Select,查询需要78秒(1.3分钟)。而使用OSS Select,只需要11秒,程序性能提升6倍! 

测试配置说明:

Spark测试集群配置:

数量 配置
master 1 4core 8GB
workers 2 4core 8GB

Spark配置:

export SPARK_MASTER_IP=masterexport SPARK_WORKER_MEMORY=6gexport SPARK_WORKER_CORES=3export SPARK_WORKER_INSTANCES=1export SPARK_EXECUTOR_CORES=1export SPARK_EXECUTOR_MEMORY=2g

数据量:

CSV数据量为7GB。

原文链接

原文地址:http://blog.51cto.com/13679539/2119808

时间: 2024-08-27 08:11:51

OSS重磅推出OSS Select——使用SQL选取文件的内容【免费公测中】的相关文章

【免费公测中】为数据赋予超能力,阿里云重磅推出Serverless数据分析引擎-Data Lake

摘要: 近日,阿里云重磅推出Serverless数据分析引擎-Data Lake Analytics,Data Lake Analytics,帮助更多不具备分析能力的存储服务,赋予其分析的能力. 近日,阿里云重磅推出Serverless数据分析引擎-Data Lake Analytics,Data Lake Analytics,帮助更多不具备分析能力的存储服务,赋予其分析的能力. 从生活中的购物交易,到工业上的生产制造,再到社交网络媒体信息.企业化管理决策等等,大数据成为当前经济社会最重要的前进

重磅!阿里云区块链服务免费公测,助力企业级业务快速上链

摘要: 阿里云区块链服务(BaaS)重磅来袭,免费公测进行时,欢迎使用! 近日阿里云正式上线区块链服务(Blockchain as a Service,简称BaaS),即基于主流区块链技术的企业级技术平台.此次向公众开放的是Hyperledger Fabric,该BaaS承担区块链开发.部署.运维和管理等任务,提供业务区块链化的快速通道,可用于实现跨企业.跨区域的区块链应用. 阿里云区块链服务是基于主流开源Hyperledger Fabric和蚂蚁区块链技术的企业级PaaS平台,用户使用阿里云区

Java执行SQL脚本文件到数据库

方式一:直接读取SQL脚本文件的内容,然后传递到SQL中. 代码:RunSqlService: @Autowired private RunSqlDao runSqlDao; /** * 读取文件内容到SQL中执行 * @param sqlPath SQL文件的路径:如:D:/TestProject/web/sql/脚本.Sql */ public void runSqlByReadFileContent(String sqlPath) throws Exception { try { Stri

Windows Store App JavaScript 开发:选取文件和文件夹

前面提到过,文件打开选取器由FileOpenPicker类表示,用于选取或打开文件,而文件夹选取器由FolderPicker类表示,用来选取文件夹.在FileOpenPicker类中,pickSingleFileAsync函数用于选取单个文件,pickMultipleFilesAsync函数用于选取多个文件:而FolderPicker类中只有一个pickSingleFolderAsync函数,用来选取单个文件夹.下面以一个应用程序为例来演示如何选取文件或文件夹. 新建一个JavaScript的W

mybatis 中 sql 映射文件 select 标签以及 入 resultMap 标签的应用

1.自定义某个 javabean 的封装规则: 注:可以看到,select 标签中引用了 定义好的 resultMap 的值.resultMap 标签中的 type 为javabean 类型,id 为唯一标识.id 子标签定义主键(这样定义底层会有优化.)column 属性为字段名,property 属性为字段值. 注:可以看到测试结果没有出现问题,说明代码没有错误. 2.自定义某个 javabean 的级联属性封装: a.准备工作:mysql 数据库中,在之前 tbl_employees 表的

SQL映射文件-----MySQL关系映射【1对1,1对多,多对多】

SSM框架下,mapper.xml 中 association 标签和 collection 标签的使用 当数据库中表与表之间有关联时,在对数据库进行操作时,就不只是针对某一张表了,需要联表查询 MyBatis中如何实现联表查询 1.首先新建两张表 学生表(student) ID:stu_id 姓名:stu_name 年龄:stu_age 性别:stu_gender 所在班级:g_id 班级表(grade) ID:g_id 班级名称:g_name 学生表和班级表通过 g_id 进行关联,一个班级

MyBatis -- sql映射文件详解

MyBatis 真正的力量是在映射语句中.和对等功能的jdbc来比价,映射文件节省很多的代码量.MyBatis的构建就是聚焦于sql的. sql映射文件有如下几个顶级元素:(按顺序) cache配置给定命名空间的缓存. cache-ref从其他命名空间引用缓存配置. resultMap最复杂,也是最有力量的元素,用来描述如何从数据库结果集中来加载你的对象. parameterMap已经被废弃了!老式风格的参数映射.内联参数是首选,这个元素可能在将来被移除. sql可以重用的SQL块,也可以被其他

SQLServer 2008中SQL增强之三 Merge(在一条语句中使用

SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Update,Delete) SQL Server 2008提供了一个增强的SQL命令Merge,用法参看MSDN:http://msdn.microsoft.com/zh-cn/library/bb510625.aspx 功能:根据与源表联接的结果,对目标表执行插入.更新或删除操作.例如,根据在另一个表中找到的差异在一个表中插入.更新或删除行,可以对两个表进行同步. 我们看一个例子,假如,有一总产品列表,一

SQL Server 文件和文件组

文件和文件组简介 在SQL Server中,数据库在硬盘上的存储方式和普通文件在Windows中的存储方式没有什么不同,仅仅是几个文件而已.SQL Server通过管理逻辑上的文件组的方式来管理文件. SQL Server通过文件组对数据文件进行管理.我们看到的逻辑数据库由一个或者多个文件组构成. 结构图如下: 文件组管理着磁盘上的文件,文件中存放的就是SQL Server的实际数据. 为什么通过文件组来管理文件 从用户的角度来说,创建对象时需要指定存储文件组的只有三种数据对象:表,索引和大对象