2017-11-13 10 views
0

AWS EMRの新機能です。私はHiveを起動して実行しており、問題なくS3の外部テーブルにクエリを実行しています。私は今、PrestoをEMRクラスタにインストールしました。これは起動しているようで、Hiveメタベースを読み取ることができます。しかし、私が実行するすべてのクエリは、列ヘッダーを返しますが、実際には列はありません(下のクエリ)。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> 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バケットに格納されている - ないネスト。

大変助かりました。

おかげ

+0

ハイブが_database_に裏打ちされた_MetaStore_サービスを、持っている - しかし、_Metabase _... –

+0

は用心のようなものは存在しない。いくつかの*#!\&**は、数年前、Hiveがすべての 'count(*)'クエリに対して間違った結果を与えることを決めました。なぜ私に尋ねないでください。しかし、これは「統計」、すなわち過去のある時点では妥当であった値を使用して実行されますが、今すぐクエリを実行するときにはマークから離れてしまいます。 OK、間違った結果を返すことは非常に速いですが、間違っています。 –

+0

私の2セント:IDがヌルでないWTFからselect count(*)のようなsthgを試してみてください。実際の結果を計算するためにクエリが実際にデータをフェッチするかどうかを確認するには粗い "統計"を使用できません。 –

答えて

0

問題は、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'; 
関連する問題