amazon-web-services - Parquet 文件上的 S3 SELECT 不返回任何记录
问题描述
import boto3
s3 = boto3.client('s3')
resp = s3.select_object_content(
Bucket='s3-nb-demo',
Key='sample_data.parquet',
ExpressionType='SQL',
Expression="SELECT * FROM s3object s where s.\"Name\" = 'NB'",
InputSerialization = {'Parquet': {}},
OutputSerialization = {'CSV': {}},
)
for event in resp['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'])
print("Stats details bytesReturned: ")
print(statsDetails['BytesReturned'])
该代码不返回任何行。我已经使用 Athena 验证了数据文件和查询,它返回了多行。该resp['Payload']
对象没有名为 的属性Records
。我见过很多使用 CSV 文件的示例,但没有关于 Parquet 文件的帖子。
解决方案
推荐阅读
- python - 当等于某个值时,Forloop python 递减行为
- bash - 十六进制到 ASCII 文本转换器的脚本
- laravel - Laravel:发布请求不断收到 302
- javascript - 为什么 React 的 useReducer 在第一次在 useEffect 上获取数据时返回空状态?
- java - 如何使用 Micronaut 在 HttpClientFilter 中重试 HTTP 客户端请求?
- javascript - 录制后getUserMedia不上传
- reactjs - React useState导致双重渲染
- c++ - 如何在 VS2015 的 windows 10 上构建 snappy?
- java - 为什么我的程序在java中没有给出任何输出就终止了?
- node.js - 如何以及在何处为 asp.net 和 node.js angular typescript 应用程序添加 unleash-client