如何从 Trino 读取 S3 中的数据分区

我正在尝试从 Trino 读取 S3 中的数据分区。 我到底做了什么:

我将所有分区的数据上传到 S3。我有一个指定的 avro 模式,我把它放在文件本地系统中。

然后我创建了一个外部 hive 表来指向 S3 中的数据位置和文件本地系统中的 avro 模式。 表已创建。

然后,通常我可以从 Trino 查询我在 S3 中的数据和分区。

Trino>select * from hive.default.my_table;

它只返回列名。

trino>select * from hive.default."my_table$partitions";

它只返回分区名称。

能否请您给我建议一个解决方案,如何从 Trino 读取 S3 中的数据分区?

知道我正在使用 Apache Hive 2,即使我在 hive 中查询表以返回表分区,它也会返回 Ok,并显示任何内容。我认为因为 Hive 2 我们应该使用 MSCK command

pengqy54 回答:如何从 Trino 读取 S3 中的数据分区

在 Hive 中将分区文件夹和文件上传到 S3 并创建表是不够的,应该创建分区元数据。通常,您可以将文件夹安装为分区。要将表位置中的所有现有子文件夹安装为分区:

使用msck修复表命令:

MSCK [REPAIR] TABLE tablename;

或亚马逊 EMR 版本:

ALTER TABLE tablename RECOVER PARTITIONS;

它将在 Hive Metastore 中创建分区元数据,并且分区将变得可用。

在此处阅读有关这两个命令的更多详细信息:RECOVER PARTITIONS

本文链接:https://www.f2er.com/1021600.html

大家都在问