从命令行检查 S3 中的 Parquet

问题描述 投票:0回答:3

我可以使用以下命令下载单个 snappy.parquet 分区文件:

aws s3 cp s3://bucket/my-data.parquet/my-data-0000.snappy.parquet ./my-data-0000.snappy.parquet

然后使用:

parquet-tools head my-data-0000.snappy.parquet
parquet-tools schema my-data-0000.snappy.parquet
parquet-tools meta my-data-0000.snappy.parquet

但我不想下载该文件,也不想指定特定的 snappy.parquet 文件。相反,前缀:“s3://bucket/my-data.parquet”

如果不同分区文件的不同行组中的架构不同怎么办?

按照说明这里我下载了一个jar文件并运行了

hadoop jar parquet-tools-1.9.0.jar schema s3://bucket/my-data.parquet/

但这导致了错误:没有架构“s3”的文件系统。

这个 answer 看起来很有希望,但仅适用于从 HDFS 读取。 S3有什么解决方案吗?

amazon-s3 parquet
3个回答
2
投票

我编写了工具 clidb 来帮助完成这种“快速查看 S3 中的 parquet 文件”任务。

你应该能够做到:

pip install "clidb[extras]"
clidb s3://bucket/

然后单击将镶木地板文件加载为视图以检查和运行 SQL。


0
投票

您可以使用此 aws cli 命令,它适用于大于 128 MB 的文件,而不是 AWS 控制台中的 S3 Select。 不过,您需要直接指定文件。对于行组中的不同模式,您将需要一个更强大的解决方案,但对我来说,这超出了“快速浏览”的范围。

aws s3api select-object-content \
--bucket bucket \
--key "my-data.parquet/my-data-0000.snappy.parquet" \
--expression "select * from s3object limit 100" \
--expression-type 'SQL' \
--input-serialization '{"Parquet": {}, "CompressionType": "NONE"}' \
--output-serialization '{"JSON": {}}' "output.json"

该命令将使用输出创建

output.json
文件。


0
投票

我找到了这个 pip 可安装的 parquet-tools,它为您提供有关 S3 上的 parquet 文件的信息。唯一的先决条件是您应该有权访问 S3 上的文件。

parquet-tools inspect s3://path/to/file.parquet
© www.soinside.com 2019 - 2024. All rights reserved.