在Amazon S3上使用Presto

7
我正在尝试在Amazon S3桶上使用Presto,但是在互联网上并没有找到太多相关信息。
我已经在微型实例上安装了Presto,但我无法弄清楚如何连接到S3。有一个存储桶和其中的文件。我有一个运行中的hive metastore服务器,并且已在presto hive.properties中进行了配置。但是当我尝试在hive中运行LOCATION命令时,它不起作用。
IT会抛出一个错误,指出找不到文件方案类型s3。
而且我不知道为什么我们需要运行hadoop,但是没有hadoop,hive就无法运行。这有什么解释吗?
我按照此文档此文档进行了设置。

离你的问题有点远,但为什么不使用AWS EMR呢?所有这些配置都是开箱即用的,据我所知,Presto需要一个集群才能表现良好,单个EC2实例是不够的。还有一点:如果您不想启动集群来运行Presto,可以使用AWS Athena,这是亚马逊提供的一项服务,提供Presto作为服务。Athena的定价是按数据扫描计费的,因此如果您的数据很小,那么您就可以省去成本,他们会按每1TB扫描收取5美元的费用。如果您只是在尝试Presto,我强烈建议您使用它。 - Abdulhafeth Sartawi
1个回答

7
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的传递,我认为您不会获得什么好处。

谢谢您的回复。我想尝试使用Presto,而且不希望有任何费用。请检查编辑内容,我在阅读您提到的相关材料后还有更多疑问。 - Codex
使用Amazon EMR会产生费用,所以我想避免这种情况。有没有其他解决方法? - Codex
2
我去年写了一篇关于这个主题的文章。虽然我自那以后没有尝试过这个设置,但仍有可能会有所帮助。总体思路是使用Docker容器作为Hive元存储,这样您就不需要像EMR这样的托管服务来路由Presto查询。 - Daniel Corin
1
@Euan,像EMR将配置文件放在无法在Presto文档中找到的特殊文件夹中这样的信息是否可在任何地方获得,还是目前都是部落知识?我正在尝试建立一个基本的Presto-> Hive-> S3设置,但结果出奇的糟糕。 - a p

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接