- MinIO Quickstart Guide
- MinIO Docker 快速入门
- Minio纠删码快速入门
- 分布式MinIO快速入门
- 使用MinIO分解的HDP Spark和Hive
- 使用TLS安全的访问Minio服务
- MinIO存储桶通知指南
- MinIO Server config.json (v18) 指南
- MinIO多租户(Multi-tenant)部署指南
- MinIO Azure 网关
- MinIO GCS 网关
- MinIO NAS网关
- MinIO S3网关
- MinIO HDFS网关
- 磁盘缓存快速入门
- 如何使用Prometheus监控MinIO服务器
- Federation 快速入门指南
- KMS指南
- 选择API快速入门指南
- 压缩指南
- MinIO多用户快速入门指南
- MinIO STS快速入门指南
- MinIO部署快速入门
- 使用Docker Swarm部署MinIO
- 使用Kubernetes部署MinIO
- 使用Docker Compose部署MinIO
- MinIO客户端快速入门指南
- MinIO Client完全指南
- MinIO管理员完整指南
- 适用于Amazon S3兼容云存储的Minio JavaScript Library
- JavaScript Client API参考文档
- 适用于与Amazon S3兼容的云存储的MinIO Java SDK
- Java Client API参考文档
- 适用于与Amazon S3兼容的云存储的MinIO Python Library
- Python Client API文档
- 适用于与Amazon S3兼容云存储的MinIO Go SDK
- MinIO Go Client API文档
- 适用于与Amazon S3兼容的云存储的MinIO .NET SDK
- .NET Client API参考文档
- 用于Haskell的MinIO Client SDK
- MinIO Haskell SDK API参考
- 使用S3cmd操作MinIO Server
- 使用AWS CLI结合MinIO Server
- restic结合MinIO Server
- 将MySQL备份存储到MinIO Server
- 将MongoDB备份存储到MinIO Server
- 将PostgreSQL备份存储到MinIO Server
- 为MinIO Server设置Caddy proxy
- 为MinIO Server设置Nginx代理
- 使用fluentd插件聚合Apache日志
- Rclone结合MinIO Server
- 结合MinIO运行Deis Workflow
- 为MinIO Server设置Apache HTTP proxy
- 使用pre-signed URLs通过浏览器上传
- 如何在FreeNAS中运行MinIO
- 如何使用Cyberduck结合MinIO
- 如何使用AWS SDK for PHP操作MinIO Server
- 如何使用AWS SDK for Ruby操作MinIO Server
- 如何使用AWS SDK for Python操作MinIO Server
- 如何使用Mountain Duck结合MinIO
- 如何使用AWS SDK for Javascript操作MinIO Server
- 如何使用Træfɪk代理多个MinIO服务
- 如何使用AWS SDK for Go操作MinIO Server
- 如何使用AWS SDK for Java操作MinIO Server
- 如何使用Paperclip操作MinIO Server
- 如何使用AWS SDK for .NET操作MinIO Server
- 如何使用aws-cli调用MinIO服务端加密
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
选择API快速入门指南
传统的对象检索始终是整个实体,即5 GiB对象的GetObject将始终返回5 GiB数据。S3 Select API允许我们使用简单的SQL表达式来检索数据的子集。通过使用Select API仅检索应用程序所需的数据,可以实现大幅的性能改进。
您可以使用Select API查询具有以下功能的对象:
- CSV,JSON和Parquet-对象必须为CSV,JSON或Parquet格式。
- UTF-8是Select API支持的唯一编码类型。
- GZIP或BZIP2-可以使用GZIP或BZIP2压缩CSV和JSON文件。Select API支持使用GZIP,Snappy,LZ4对Parquet进行列压缩。Parquet对象不支持整个对象压缩。
- 服务器端加密-Select API支持查询受服务器端加密保护的对象。
当未键入值时(例如,读取CSV数据时),将根据上下文执行类型推断和值的自动转换。如果存在,则CAST功能将覆盖自动转换。
1. 先决条件
- 从这里安装MinIO Server 。
- 熟悉AWS S3 API。
- 熟悉Python和安装依赖项。
2.安装 boto3
aws-sdk-python
从此处安装适用于Python的AWS开发工具包官方文档
3. 例子
例如,让我们以gzip压缩的CSV文件为例。如果没有S3 Select,我们将需要下载,解压缩和处理整个CSV以获得所需的数据。使用Select API,可以使用简单的SQL表达式仅从您感兴趣的CSV中返回数据,而不是检索整个对象。以下Python示例显示了如何Location
从包含CSV格式数据的对象中检索第一列。
请更换endpoint_url
,aws_access_key_id
,aws_secret_access_key
,Bucket
和Key
在这个本地设置select.py
文件。
#!/usr/bin/env/env python3
import boto3
s3 = boto3.client('s3',
endpoint_url='http://localhost:9000',
aws_access_key_id='minio',
aws_secret_access_key='minio123',
region_name='us-east-1')
r = s3.select_object_content(
Bucket='mycsvbucket',
Key='sampledata/TotalPopulation.csv.gz',
ExpressionType='SQL',
Expression="select * from s3object s where s.Location like '%United States%'",
InputSerialization={
'CSV': {
"FileHeaderInfo": "USE",
},
'CompressionType': 'GZIP',
},
OutputSerialization={'CSV': {}},
)
for event in r['Payload']:
if 'Records' in event:
records = event['Records']['Payload'].decode('utf-8')
print(records)
elif 'Stats' in event:
statsDetails = event['Stats']['Details']
print("Stats details bytesScanned: ")
print(statsDetails['BytesScanned'])
print("Stats details bytesProcessed: ")
print(statsDetails['BytesProcessed'])
4. 运行程序
使用以下命令将样本数据集上传到MinIO。
$ curl "https://population.un.org/wpp/Download/Files/1_Indicators%20(Standard)/CSV_FILES/WPP2019_TotalPopulationBySex.csv" > TotalPopulation.csv
$ mc mb myminio/mycsvbucket
$ gzip TotalPopulation.csv
$ mc cp TotalPopulation.csv.gz myminio/mycsvbucket/sampledata/
现在,让我们继续运行我们的选择示例,以查询Location
匹配的内容United States
。
$ python3 select.py
840,United States of America,2,Medium,1950,1950.5,79233.218,79571.179,158804.395
840,United States of America,2,Medium,1951,1951.5,80178.933,80726.116,160905.035
840,United States of America,2,Medium,1952,1952.5,81305.206,82019.632,163324.851
840,United States of America,2,Medium,1953,1953.5,82565.875,83422.307,165988.190
....
....
....
Stats details bytesScanned:
6758866
Stats details bytesProcessed:
25786743
F有关更详细的SELECT SQL参考,请参见此处
5. 进一步探索
mc
与MinIO服务器一起使用mc sql
与MinIO服务器一起使用minio-go
SDK 与MinIO服务器一起使用aws-cli
与MinIO服务器一起使用s3cmd
与MinIO服务器一起使用- MinIO文档网站
6. 实施状况
- 支持完整的AWS S3 SELECT SQL语法。
- 支持所有运算符 。
- 支持所有聚合,条件,类型转换和字符串函数。
FROM S3Object[*].path
尚未评估JSON路径表达式。- 尚不支持大号(有符号的64位范围之外)。
- 日期的功能
DATE_ADD
,DATE_DIFF
,EXTRACT
并UTCNOW
使用类型转换沿CAST
的TIMESTAMP
数据类型,目前支持。 - 尚未遵守AWS S3的保留关键字列表。
- The Date functions
DATE_ADD
,DATE_DIFF
,EXTRACT
andUTCNOW
along with type conversion usingCAST
to theTIMESTAMP
data type are currently supported. - CSV输入字段(甚至带引号)也不能包含换行符,即使
RecordDelimiter
是其他内容也是如此。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论