【问题标题】:Presto not returning rows from Hive MetabasePresto 不从 Hive 元数据库返回行
【发布时间】:2018-04-26 10:38:23
【问题描述】:

我对 AWS EMR 非常陌生。我已经启动并运行了 Hive,并且一直在 S3 中查询外部表,没有任何问题。我现在已将 Presto 安装到 EMR 集群上,这似乎已启动并正在运行,并且可以读取 Hive 元数据库。但是,我运行的每个查询都返回列标题,但实际上不返回任何列(下面的查询)。

presto:default> select count(*) from patrequests;
 _col0
-------
     0
(1 row)

Query 20171113_163811_00033_vdw6c, FINISHED, 1 node
Splits: 17 total, 17 done (100.00%)
0:00 [0 rows, 0B] [0 rows/s, 0B/s]

Hive 中的相同查询运行良好:

hive> select * from patrequests limit 10;
OK
2017-10-01T00:00:18.6772628Z    779     *****  *****  *****      *****      2017    10
Time taken: 2.876 seconds, Fetched: 10 row(s)

数据以 JSON 格式存储在 S3 存储桶中 - 无嵌套。

非常感谢任何帮助。

谢谢

【问题讨论】:

  • Hive 有一个 MetaStore 服务,由 database 支持——但没有 MetaBase 这样的东西...
  • 当心:一些 #!\&* 多年前就决定,Hive 应该为所有 count(*) 查询提供错误的结果。不要问我为什么。但它是通过使用“统计数据”来完成的,即在过去某个时间点看似合理的值,但当现在运行查询时肯定会离谱。 OK,返回错误的结果很快,但是是错误的。
  • 我的 2 美分:试试select count(*) from WTF where ID is not null 之类的东西(不能使用粗略的“统计”),看看查询是否真的获取数据来计算有效结果......
  • 对不起,我指的是 Presto 可以看到的 Hive Metastore。但是,问题不在于 Hive,而在于 Presto 不返回结果。我尝试在非聚合选择上运行,但它仍然没有返回任何内容。会不会是 Presto 不喜欢的基础数据的问题?

标签: hadoop hive presto


【解决方案1】:

问题似乎在于 Presto 无法使用 JSON Serde org.openx.data.jsonserde.JsonSerDe。使用 S3 存储桶中的以下内容引导实例似乎可以解决问题:

#!/bin/bash
wget -P /usr/lib/presto/plugin/hive-hadoop2/  'https://s3-eu-west-1.amazonaws.com/########/json-serde-1.3.9-SNAPSHOT-jar-with-dependencies.jar';
wget -P /usr/lib/hive-hcatalog/share/hcatalog/ 'https://s3-eu-west-1.amazonaws.com/########/json-serde-1.3.9-SNAPSHOT-jar-with-dependencies.jar';

【讨论】:

    猜你喜欢
    • 2020-12-28
    • 2019-08-15
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 2020-03-27
    • 2021-01-17
    • 1970-01-01
    相关资源
    最近更新 更多