亚马逊S3上的Presto

Cod*_*dex 6 amazon-s3 amazon-ec2 amazon-web-services presto

我正在尝试在Amazon S3存储桶上使用Presto,但在互联网上找不到太多相关信息.

我在微型实例上安装了Presto,但我无法弄清楚如何连接到S3.有一个存储桶,里面有文件.我有一个运行的hive Metastore服务器,我已在presto hive.properties中配置它.但是当我尝试在hive中运行LOCATION命令时,它无法正常工作.

IT抛出一个错误,说无法找到文件方案类型s3.

而且我也不知道为什么我们需要运行hadoop但没有hadoop蜂巢不会运行.对此有任何解释吗?

是单证而建立我已经遵循.

Eua*_*uan 6

Presto使用Hive Metastore将数据库表映射到其底层文件.这些文件可以存在于S3上,并且可以以多种格式存储 - CSV,ORC,Parquet,Seq等.

Hive Metastore通常通过HQL(Hive查询语言)填充,通过发出DDL语句,例如引用包含数据的底层文件CREATE EXTERNAL TABLE ...LOCATION ...子句.

为了使Presto连接到Hive Metastore,您需要编辑hive.properties文件(EMR将其放入/etc/presto/conf.dist/catalog/)并将hive.metastore.uri参数设置为适当的Hive Metastore服务的thrift服务.

如果您选择Hive和Presto,Amazon EMR集群实例将自动为您配置,因此它是一个很好的起点.

如果您想在独立的ec2实例上进行测试,那么我建议您首先关注如何使用Hadoop基础架构来实现功能配置单元服务.您应该能够定义驻留在hdfs文件系统上的本地表.Presto补充了hive,但确实需要一个正常运行的hive设置,presto的本地ddl语句不像hive一样功能完整,因此你可以直接从hive创建大多数表.

或者,你可以为mysql或postgresql数据库定义Presto连接器,但它只是一个jdbc传递我不认为你会获得太多.

  • 我去年就这个话题写了以下 [post](http://blog.danielcorin.com/code/2016/04/11/querying-s3-with-presto.html)。从那以后我还没有尝试过这种设置,但有可能会有所帮助。一般的想法是使用 Docker 容器作为 Hive 元存储,这样您就不需要像 EMR 这样的托管服务来路由您的 Presto 查询。 (2认同)