概览
Hive连接器允许查询存储在Hive数据仓库中的数据。Hive是由三个部分组成。
- 各种格式的数据文件通常存储在Hadoop分布式文件系统(HDFS)或Amazon S3中。
- 有关如何将数据文件映射到schemas 和表的元数据。此元数据存储在数据库(例如MySQL)中,并可通过Hive Metastore服务进行访问。
- 一种称为HiveQL的查询语言。该查询语言在MapReduce或Tez的分布式计算框架上执行。
Presto仅使用前两个组件:数据和元数据。它不使用HiveQL或Hive执行环境的任何一部分。
支持的文件类型
- ORC
- Parquet
- Avro
- RCFile
- SequenceFile
- JSON
- Text
配置
Hive连接器支持Apache Hadoop 2.x及其衍生版本,如Cloudera CDH 5
和Hortonworks Data Platform (HDP)
.
创建etc/catalog/hive.properties,
代码语言:javascript复制#随意
connector.name=hive-hadoop2
#用Hive Metastore Thrift服务的正确主机和端口替换example.net:9083
hive.metastore.uri=thrift://example.net:9083
多个Hive集群
根据需要可以创建任意数量的catalog
,如果有其他Hive集群服务,只需将另一个属性文件添加到etc/catalog
中,并使用不同的名称(确保以.properties
结尾)。例如,如果命名属性文件sales.properties
,Presto将使用配置的连接器创建一个名为sales
的catalog
.
HDFS 配置
一般来说,Presto会自动配置HDFS客户端,不需要任何配置文件。在某些情况下,例如使用联邦HDFS或NameNode高可用性
时,有必要指定其他HDFS客户端选项以访问的HDFS集群。所以,添加hive.config.resources
属性以引用HDFS配置文件.
hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml
仅在需要时指定其他配置文件。我们还建议减少配置文件,使其具有最少的必需属性集,因为其他属性可能会引起问题。
配置文件必须存在于所有Presto节点上。如果要引用现有的Hadoop配置文件,请确保将它们复制到任何未运行Hadoop的Presto节点。
HDFS Username
当不使用Kerberos
时,Presto将使用Presto进程
所在的OS
用户访问HDFS
。我们可以通过在Presto JVM Config中
设置HADOOP_USER_NAME系统属性
来覆盖此用户名.
#将hdfs_user替换为适当的用户名
-DHADOOP_USER_NAME=hdfs_user
Hive配置属性
Amazon S3 配置
Hive连接器可以读写存储在S3中的表。使表或数据库使用S3前缀
而不是HDFS前缀
来实现。
Presto将其自己的S3文件系统用于URI前缀s3://
,s3n://
和s3a://
。
S3SelectPushdown
S3SelectPushdown
可以将投影(SELECT
)和谓词(WHERE
)处理下推到S3 Select
。使用S3SelectPushdown
,Presto仅从S3而不是整个S3对象中检索所需的数据,从而减少了延迟和网络使用率。
Alluxio 配置
Presto可以利用Alluxio
的分布式块级读/写缓存功能读取和写入存储在Alluxio中的表。必须使用alluxio://
前缀创建表,存储在Hive元存储库中(有关详细信息和示例,请参阅 https://docs.alluxio.io/os/user/2.1/en/compute/Hive.html)。然后,Presto将透明地从各种不同的存储系统(包括HDFS和S3
)中检索和缓存文件或对象。