我正在尝试在Amazon S3桶上使用Presto,但是在互联网上并没有找到太多相关信息。我已经在微型实例上安装了Presto,但我无法弄清楚如何连接到S3。有一个存储桶和其中的文件。我有一个运行中的hive metastore服务器,并且已在presto hive.properties中进行了配置。但是当我尝试在hive中运行LOCATION命令时,它不起作用。IT会抛出一个错误,指出找不到文件方案类型s3。而且我不知道为什么我们需要运行hadoop,但是没有hadoop,hive就无法运行。这有什么解释吗?我按照此文档和此文档进行了设置。
Presto使用Hive元数据存储映射数据库表和底层文件。这些文件可以存在于S3上,并且可以以多种格式存储,例如CSV、ORC、Parquet和Seq等等。通常通过HQL(Hive查询语言)向Hive元数据存储填充数据,通过发出DDL语句如CREATE EXTERNAL TABLE ...,并使用一个LOCATION ...从句引用持有数据的底层文件。为了使Presto连接到Hive元数据存储,您需要编辑hive.properties文件(EMR将其放在/etc/presto/conf.dist/catalog/中),并将参数设置为适当的Hive元数据存储服务的thrift服务。如果您选择了Hive和Presto,则Amazon EMR集群实例会自动为您配置此项,因此这是一个很好的起点。如果您想在独立的ec2实例上进行测试,那么我建议您首先专注于使具有Hadoop基础架构的Hive服务正常运行。您应该能够定义位于hdfs文件系统上的本地表。Presto和Hive相辅相成,但需要一个运行良好的Hive环境,Presto的本机DDL语句不如Hive功能完备,因此大部分的表创建都应该直接通过Hive完成。或者,您可以为mysql或postgresql数据库定义Presto连接器,但这只是一个jdbc的传递,我认为您不会获得什么好处。