Hive 为Presto和AWS S3设置独立配置单元元存储服务

Hive 为Presto和AWS S3设置独立配置单元元存储服务,hive,presto,hive-metastore,Hive,Presto,Hive Metastore,我工作的环境中,S3服务被用作数据湖,而不是AWS Athena。我正在尝试设置Presto以便能够查询S3中的数据,我知道我需要通过Hive Metastore服务将数据结构定义为Hive表。我将在Docker中部署每个组件,因此我希望容器大小尽可能小。我需要配置单元中的哪些组件才能运行Metastore服务?我其实并不关心运行Hive,只关心Metastore。我是否可以减少所需的内容,或者是否已经有一个预先配置的软件包?我在网上找不到任何不包括下载所有Hadoop和Hive的东西。我想做的

我工作的环境中,S3服务被用作数据湖,而不是AWS Athena。我正在尝试设置Presto以便能够查询S3中的数据,我知道我需要通过Hive Metastore服务将数据结构定义为Hive表。我将在Docker中部署每个组件,因此我希望容器大小尽可能小。我需要配置单元中的哪些组件才能运行Metastore服务?我其实并不关心运行Hive,只关心Metastore。我是否可以减少所需的内容,或者是否已经有一个预先配置的软件包?我在网上找不到任何不包括下载所有Hadoop和Hive的东西。我想做的是可能的吗?

有一个解决方法,您不需要配置单元来运行presto。然而,我还没有在像s3这样的分布式文件系统上尝试过,但代码建议它应该可以工作(至少在HDFS上)。在我看来,这是值得一试的,因为你根本不需要任何新的蜂巢码头形象

这个想法是使用一个内置的。它既没有文档记录,也不建议在生产中使用,但您可以使用它。模式信息存储在文件系统中的数据旁边。显然,它有其利弊。我不知道你的用例的细节,所以我不知道它是否适合你的需要

配置:

connector.name=hive-hadoop2
hive.metastore=file
hive.metastore.catalog.dir=file:///tmp/hive_catalog
hive.metastore.user=cox
演示:

完成上述操作后,我能够在我的机器上找到以下内容:

/tmp/hive_catalog/
/tmp/hive_catalog/default
/tmp/hive_catalog/default/t
/tmp/hive_catalog/default/t/.prestoPermissions
/tmp/hive_catalog/default/t/.prestoPermissions/user_cox
/tmp/hive_catalog/default/t/.prestoPermissions/.user_cox.crc
/tmp/hive_catalog/default/t/.20180223_202616_00010_iuchi_79dee041-58a3-45ce-b86c-9f14e6260278.crc
/tmp/hive_catalog/default/t/.prestoSchema
/tmp/hive_catalog/default/t/20180223_202616_00010_iuchi_79dee041-58a3-45ce-b86c-9f14e6260278
/tmp/hive_catalog/default/t/..prestoSchema.crc
/tmp/hive_catalog/default/.prestoSchema
/tmp/hive_catalog/default/..prestoSchema.crc

仅仅为metastore设置hive看起来确实很麻烦。 您是否考虑过改用AWS glue数据目录? 这样你就不必管理任何事情了。
您可以在此处找到详细信息:

它现在在Apache hive发行版中提供了standalone
/hive-standalone-metastore-3.0.0/

从Hive3.0开始,Metastore作为一个单独的包发布 并且可以在没有蜂箱其他部分的情况下运行。这被称为 独立模式

默认情况下,Metastore配置为与配置单元一起使用,因此 必须在此配置中更改配置参数


我能够使用Presto SQL amd HMS 3.0与AWS S3集成。如果有帮助的话,我写了一封信。

感谢您提供这个答案,这正是我想要的,只是想尝试一下,看起来它对我要做的事情非常有效,就是查询S3中的数据。稍后我将不得不针对一些分区对其进行测试。我们的S3拼花文件都是服务端加密的,当我使用此方法从S3位置创建表时,我可以创建表,但是从表中选择,我得到的不是有效的拼花文件错误。有没有办法解决这个问题?为什么不建议在生产中使用?到目前为止,Presto(2020年1月13日)还不支持Hive 3.x
/tmp/hive_catalog/
/tmp/hive_catalog/default
/tmp/hive_catalog/default/t
/tmp/hive_catalog/default/t/.prestoPermissions
/tmp/hive_catalog/default/t/.prestoPermissions/user_cox
/tmp/hive_catalog/default/t/.prestoPermissions/.user_cox.crc
/tmp/hive_catalog/default/t/.20180223_202616_00010_iuchi_79dee041-58a3-45ce-b86c-9f14e6260278.crc
/tmp/hive_catalog/default/t/.prestoSchema
/tmp/hive_catalog/default/t/20180223_202616_00010_iuchi_79dee041-58a3-45ce-b86c-9f14e6260278
/tmp/hive_catalog/default/t/..prestoSchema.crc
/tmp/hive_catalog/default/.prestoSchema
/tmp/hive_catalog/default/..prestoSchema.crc
metastore.task.threads.always -> org.apache.hadoop.hive.metastore.events.EventCleanerTask,org.apache.hadoop.hive.metastore.MaterializationsCacheCleanerTask
metastore.expression.proxy -> org.apache.hadoop.hive.metastore.DefaultPartitionExpressionProxy