PrestoとHiveの5つの大きな違いは以下の通りです。

  1. Hive はユーザーがカスタムコードをプラグインできるのに対し、Presoはできません。
  2. Prestoは ANSI SQL に準拠するように設計されていますが、Hiveは HiveQL を使用します。
  3. Prestoは限られた量のデータを扱うことができます。大規模なレポートを作成する場合は Hiveを使用した方が良いでしょう。
  4. Hiveはしばしば障害に耐えられますが、Prestoはそうではありません。
  5. Hiveはmap-reduceアーキテクチャを使用し、ディスクにデータを書き込むのに対し、Prestoはmap-reduceを使用せずにHDFSアーキテクチャを使用しています。

Prestoは、エンジニアがFacebookの巨大な(300PB)データウェアハウスに対してインタラクティブな分析クエリを実行できるようにする同社のプロジェクトとして始まりました。Facebookは、Apache Softwareの下でオープンソースのツールとしてPrestoをリリースしました。Prestoを作成する前、Facebookは同じような形でHiveを使用していました。Prestoを選択し、Hiveの利用を辞めた後、HiveもオープンソースのApacheツールのデータウェアハウスツールになりました。今日、ビッグデータを扱う企業では、PrestoとHiveのいずれかに強い好みが見受けられます。よく比較してみると、両者にはいくつかの類似点と相違点があります。しかし、どちらもビッグデータの管理と変換に必要な包括的な機能を備えていません。

Table of Contents

  1. Presto vs Hive: ANSI SQLとHiveQL
  2. Presto vs Hive: カスタムコード
  3. Presto vs Hive: データ制限
  4. Presto vs Hive: HDFSとディスクへのデータ書き込み
  5. Presto vs Hive: まとめ
  6. Integrate.ioはETLのためのよりより選択肢を提供しています

Presto vs Hive: ANSI SQLとHiveQL

多くのデータエンジニアが初めてPrestoを使ってみて最初に気づくことの一つは、既存のSQLの知識を利用できるということです。Prestoは標準SQL に依存してクエリを実行し、データを取得し、データベース内のデータを変更します。SQL を知っていれば、すぐに Prestoで作業を始めることができます。多くの人がこれを利点と考えています。

Apache Hiveは SQLに似た言語を使用していますが、初心者がいくつかのクエリを学び直す必要があるほどの違いがあります。HiveQLは Hive Query Language の略で、新しいユーザを混乱させるような奇妙な点があります。しかし、SQL に慣れている人であれば、比較的早くHiveQL を使いこなせることに気づくはずです。 

Apacheは HiveQL の包括的な言語マニュアルを管理しているので、コマンドを忘れたときにいつでも調べることができます。しかし、情報を調べるのは気が散って効率が悪くなります。

Presto vs Hive: カスタムコード

Prestoは標準SQLにもとづきで動作するので、必要なコマンドはすべて揃っています。エンジニアの中には、データの取得や変更を素早く実行できるので、これを利点と考える人もいます。 

しかし、カスタムコードを挿入できないことは、高度なビッグデータユーザーにとっては問題が生じる可能性があります。この場合、HiveはPrestoよりも優位性があります。言語をよく知っていれば、カスタムコードをクエリに挿入することができます。頻繁に行う必要はないかもしれませんが、必要なときには便利です。

HiveQLでカスタムコードに取り掛かる前に、Hive Pluginsのページにアクセスして類似のコードを検索してみてください。あなたのプロジェクトに必要なコードをすでに書いている人がいるかもしれません。必要な特定のコードが見つからない場合は、少しの変更を加えるだけで独自のコマンドを実行できるプラグインが見つかるかもしれません。

Presto vs Hive: データ制限

頻繁にレポートを作成する場合、Prestoがうまく機能するのを否定する人はほとんどいないでしょう。残念ながら、Prestoのタスクには保存できるデータ量の上限があります。その壁にぶつかると、Presto のロジックは崩壊してしまいます。時間ごとや日ごとのレポートを作成する場合は、ほぼ確実に Presto に頼ることができます。FacebookはPresto を使用しており、その会社は膨大な量のデータを生成していることを覚えておいてください。とはいえ、限界に達することもあります。

Hiveにはデータの制限はないようですが、少なくとも実世界のシナリオに影響を与えるようなデータの制限はありません。そのため、週次や月次のレポートを作成する企業にとっては、Hiveはデータクエリのオプションとして最適です。扱うデータが多ければ多いほど、プロジェクトには時間がかかります。しかし、Hive は失敗しません。コマンドが終了するまで動作し続けます。

Presto vs Hive: HDFSとディスクへのデータ書き込み

PrestoとHiveの違いには、アーキテクチャが大きな役割を果たしています。

Hive と MapReduce

HiveはMapReduceを使用しており、分散サーバー上で管理しながらタスクをフィルタリングしたり、ソートしたりしています。しかし、Reduce と Map の段階の間に、Hive はディスクにデータを書き込まなければなりません。ディスクへの書き込みは、Hiveが次のタスクに移る前に少しの時間を待たなければなりません。

MapReduceがHiveでうまく機能するのは、複数のサーバーでタスクを処理できるからです。タスクを分散させることで速度が向上します。しかし、データはディスクに書き込まれなければならないため、一部のユーザーを悩ませることになります。

幸いなことに、MapReduceはHiveに並外れた柔軟性をもたらしてくれます。それは、膨大な範囲の様々なデータ形式を処理することができます。MapReduceはまた、データの障害に遭遇しても、Hiveが動作し続けるのを助けてくれます。MapReduceは障害を認識し、可能であれば次の作業に移ります。

Presto と HDFS

Presto は異なるアーキテクチャを持っているため、ある時には便利であすが、ある時には面倒なことになります。Presto は Hadoop Distributed File System (HDFS) をサポートしており、タスク間でディスクにデータを書き込む必要がない非リレーショナルソースです。その代わり、HDFS アーキテクチャは分散システム全体にデータを保存します。データが一箇所に固定されないので、Presto はディスクへのデータ書き込みのためにストップすることなくタスクを実行することができます。

明確に、HDFSにはいくつかの利点があります。しかし、驚くことではありませんが、このアーキテクチャには課題があります。HDFSは、MapReduceほど障害を許容しません。何かがうまくいかなくなると、Prestoはうまくいかなくなってシャットダウンしてしまう傾向にあります。頻繁に起こることではありませんが、障害によって何時間もの作業時間を失うことがあります。ステップを辿って問題を解決し、中断した場所から再開できると気づくかもしれません。解決策があったとしても、ユーザーは障害の発生源を追跡し、問題を診断するために貴重な時間を浪費してしまいます。

Presto vs Hive: まとめ

ビッグデータを扱う多くの専門家は、その安定性と柔軟性を評価して、PrestoよりもHiveを好んでいます。ビッグデータを専門的に扱っていると、プロジェクトをより効率的にするカスタムコードを書きたくなることがあります。

Hive を好む人がいるからといって、必ずしもPresto が劣っているというわけではありません。意図した通りに使用すれば、うまく機能します。Presto はタスクを素早く処理します。ただ、一度に多くのことを行うように要求しないでください。そうすると失敗するリスクがあります。

Integrate.ioはETLのためのより良い選択肢を提供しています

もしあなたに技術的なバックグラウンドがなければ、Presto と Hive の比較は無意味な議論のように思えるかもしれません。あなたはカスタムコードを書くのに十分なSQLを知らないので、それがあなたにとって重要とは言えないでしょう。多くの人にとっては重要なことですが、他の人は肩をすくめるだけです。

Integrate.ioは、強い技術的バックグラウンドを持っている人と持っていない人の間の橋渡しをしています。ETLソリューションは、ノーコードとローコードのプラットフォームを持っています。コーディング経験のない人は、最小限のトレーニングでIntegrate.ioを使ってデータの抽出、変換、ロードを行うことができます。コーディングの方法を知っている専門家は、プロジェクト用のカスタムコマンドを書くことができます。それはあなたの企業に両方の良い部分を与えてくれます。

Integrate.ioはデータ障害の問題を解決するのにも役立ちます。複数のデータベースから複数のデータ形式を同時に抽出することができます。失敗は、データパイプラインで論理的なエラーが発生したときにのみ起こります。Integrate.ioのプラットフォームは、これらの問題が発生したときにユーザーに警告を出すので、簡単にその問題を修正することができます。

あなたの企業のほぼすべてのメンバーのためにうまく機能する簡単なETLソリューションをお探しなら、Integrate.ioのオンラインデモとリスクなしの14日間のトライアルにお申し込みください。Integrate.ioが誰でも簡単に扱えることをデモで確認いただければ、PrestoとHiveのどちらにしようか悩んでいた理由を不思議に思うかもしれません。