我在一个环境中工作,我将S3服务用作数据湖,但不是AWS Athena。我正在尝试设置Presto以便能够在S3中查询数据,我知道我需要通过Hive Metastore服务将数据结构定义为Hive表。我正在Docker中部署每个组件,所以我希望尽可能减小容器大小。我需要从Hive中运行哪些组件才能运行Metastore服务?我真的不关心运行Hive,只是Metastore。我可以减少所需的内容,或者是否已经预先配置了一个包?我无法在网上找到任何不包括下载所有Hadoop和Hive的内容。我正在尝试做什么?
答案 0 :(得分:2)
有一种解决方法,您不需要配置单元来运行presto。但是我没有尝试过像s3这样的任何分布式文件系统,但代码建议它应该可以工作(至少使用HDFS)。在我看来,这是值得尝试的,因为你根本不需要任何新的docker镜像。
这个想法是使用内置FileHiveMetastore。它既没有记录也没有建议用于生产,但你可以使用它。模式信息存储在文件系统中的数据旁边。显然,它有它的先锋和缺点。我不知道您的用例的详细信息,因此我不知道它是否符合您的需求。
配置:
connector.name=hive-hadoop2
hive.metastore=file
hive.metastore.catalog.dir=file:///tmp/hive_catalog
hive.metastore.user=cox
演示:
presto:tiny> create schema hive.default;
CREATE SCHEMA
presto:tiny> use hive.default;
USE
presto:default> create table t (t bigint);
CREATE TABLE
presto:default> show tables;
Table
-------
t
(1 row)
Query 20180223_202609_00009_iuchi, FINISHED, 1 node
Splits: 18 total, 18 done (100.00%)
0:00 [1 rows, 18B] [11 rows/s, 201B/s]
presto:default> insert into t (values 1);
INSERT: 1 row
Query 20180223_202616_00010_iuchi, FINISHED, 1 node
Splits: 51 total, 51 done (100.00%)
0:00 [0 rows, 0B] [0 rows/s, 0B/s]
presto:default> select * from t;
t
---
1
(1 row)
在上述之后,我能够在我的机器上找到以下内容:
/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
答案 1 :(得分:1)
现在可以在Apache Hive发行版中独立使用/hive-standalone-metastore-3.0.0/
。
从Hive 3.0开始,Metastore作为单独的软件包发布 无需其他Hive即可运行。这称为 独立模式。
默认情况下,Metastore配置为与Hive一起使用,因此 在此配置中必须更改配置参数。
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
答案 2 :(得分:1)
我能够使用Presto SQL和HMS 3.0与AWS S3集成。如果有帮助,我做了一篇文章。 https://www.linkedin.com/pulse/presto-sql-s3-abhishek-gupta
答案 3 :(得分:0)
确实需要为metastore设置配置单元似乎很麻烦。 您是否考虑过使用AWS胶水数据目录? 这样,您将无需进行任何管理。 您可以在此处找到详细信息:https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-presto-glue.html