Presto 和 Hive

Posted

技术标签:

【中文标题】Presto 和 Hive【英文标题】:Presto and Hive 【发布时间】:2017-06-29 11:35:46 【问题描述】:

我正在尝试启用对位于 s3 目录中的 CSV 文件的基本 SQL 查询。 Presto 看起来很自然(文件为 10s GB)。当我在 Presto 中进行设置时,我尝试使用 Hive 连接器创建一个表。我不清楚我是否只需要 hive 元存储来将我的表配置保存在 Presto 中,或者我是否必须先在其中创建它们。

文档表明您可以使用 Presto 而无需配置 Hive,而是使用 Hive 语法。那准确吗?我的经验是 AWS S3 无法连接。

【问题讨论】:

旁注:您也可以考虑使用Amazon Athena,这是 Presto 的无服务器实现。但是,目前仅在少数地区。 我很想使用 Amazon Athena,但它不符合我的特定用例(医疗保健) 我的经验是 AWS S3 无法连接。 -- 究竟是什么问题?如果您使用 IAM 角色授予 EC2 机器对 S3 的访问权限,Presto Hive 连接器开箱即用地支持 S3(至少 s3a://)。 【参考方案1】:

Presto 语法类似于 Hive 语法。对于大多数简单的查询,相同的语法将在两者中起作用。但是,Presto 和 Hive 存在一些关键差异,它们并不完全相同。例如,在 Hive 中,您可能使用 LATERAL VIEW EXPLODE,而在 Presto 中,您将使用 CROSS JOIN UNNEST。两者之间有许多细微的句法差异的例子。

【讨论】:

【参考方案2】:

在没有 Hive 的情况下,无法使用 vanilla Presto 分析 S3 上的数据。 Presto 仅提供分布式执行引擎。但是,它缺少有关表的元数据信息。因此,Presto Coordinator 需要 Hive 检索表元数据以解析和执行查询。

但是,您可以使用托管 Presto 的 AWS Athena 在 S3 之上运行查询。

另一个选项,在最近的0.198 releasePresto 中添加了连接 AWS Glue 并在 S3 中的文件之上检索表元数据的功能。

【讨论】:

【参考方案3】:

我知道已经有一段时间了,但如果这个问题仍然悬而未决,您是否考虑过使用 Spark? Spark 可以通过开箱即用的方法轻松连接,并且可以查询/处理以 S3/CSV 格式存在的数据。

另外,我很好奇:您最终实施了什么解决方案来解决您的问题?

【讨论】:

以上是关于Presto 和 Hive的主要内容,如果未能解决你的问题,请参考以下文章

Presto 和 Hive

Presto 和 hive 分区发现

Presto实战

为啥 Presto 比 Spark SQL 快 [关闭]

Presto系列 | 二Presto Web UI

Presto系列 | 二Presto Web UI