我正在尝试在AmazonS3 bucket上使用Presto,但在互联网上没有找到太多相关信息。
我已经在一个微实例上安装了Presto,但我不知道如何连接到S3。有一个bucket,里面有文件。我有一个正在运行的hive元存储服务器,我已经在presto hive.properties中配置了它。但当我试图在hive中运行LOCATION命令时,它不起作用。
IT抛出一个错误,说找不到文件方案类型s3。
我也不知道为什么我们需要运行hadoop,但没有hadoop蜂箱就无法运行。对此有什么解释吗。
这是我在安装过程中遵循的文件。
Presto使用配置单元元存储将数据库表映射到其底层文件。这些文件可以存在于S3上,并且可以以多种格式存储——CSV、ORC、Parquet、Seq等。
配置单元元存储区通常通过HQL(配置单元查询语言)填充,方法是发出DDL语句(如CREATE EXTERNAL TABLE ...
),其中LOCATION ...
子句引用保存数据的底层文件。
为了让Presto连接到Hive元存储,您需要编辑Hive.properties文件(EMR将其放在/etc/presto/conf.dist/catalog/
中),并将hive.metastore.uri
参数设置为适当的Hive元存储器服务的节俭服务。
如果您选择Hive和Presto,Amazon EMR集群实例将自动为您配置,因此这是一个很好的起点。
如果您想在一个独立的ec2实例上测试这一点,那么我建议您首先关注于获得一个与Hadoop基础设施协同工作的功能性配置单元服务。您应该能够定义位于hdfs文件系统本地的表。Presto补充了hive,但确实需要一个正常工作的hive设置,Presto的原生ddl语句不像hive那样功能完整,所以您将直接从hive创建大多数表。
或者,您可以为mysql或postgresql数据库定义Presto连接器,但这只是一个jdbc传递,我认为您不会获得太多好处。