2017-10-15 6 views
1

私はハイヴに新しいです。だから、どのように企業がHiveを使っているのか分かりません。あなたにシナリオを与え、私がHiveの使用について概念的に正しいのかどうかを見てみましょう。ハイブ共通使用例は何ですか?

私の会社では、Webサーバーのログファイルをいくつか保存し、ログを常に検索して分析できるようにしたいとします。だから、私はログファイルの列に対応するテーブルの列を作成します。次に、ログファイルをテーブルにロードします。今、データのクエリを開始できます。したがって、データは将来の日付になるので、このテーブルにデータを追加し続けるだけで、常にログファイルをHiveのテーブルとして保持し、検索して分析することができます。

上記のシナリオはよく使用されていますか?それでは、新しいログファイルをテーブルに追加し続けるにはどうしたらいいですか?毎日手動でテーブルに追加し続ける必要がありますか?

答えて

2

は、静的データセットの解析にHiveを使用していますが、ストリーミングログがある場合は、これを実際には勧めません。これは検索エンジンではなく、あなたが探している合理的なデータを見つけるのに数分かかるでしょう。

Hadoopエコシステム内にいなければならない場合は、おそらくHBaseがより良い選択肢になります。 (HiveはHbaseに問い合わせることができます)

ログ分析に妥当なツールが必要な場合は、Splunk、またはSolr/Elasticsearch/Graylogのオープンソースの代替品を使用してください。

しかし

ご質問にお答えするためにどのように私はテーブルに新しいログファイルを追加し続けるのですか?毎日手動でテーブルに追加し続ける必要がありますか?

EXTERNALログのHDFSの場所にハイブテーブルを使用します。 Flumeを使用してそのパスにログデータを送信する(またはKafka、KafkaからHDFS、検索/分析システムにログを送信する)

日付パーティションを追加する場合は、テーブルを更新する必要があります(これはハイブのクエリがより速くなるためです)。 MSCK REPAIR TABLEを使用して、HDFSで不足しているパーティションを検出します。または、ALTER TABLE ADD PARTITIONを自分でスケジュールして実行してください。注:ハイブを使用しなければならない場合は、ORCや寄木形式にデータを変換する場合は、

、あなたがより良いクエリを向上させることができため、コンフルエントのHDFSカフカの接続が自動的にハイブテーブルのパーティションを作成します

+0

あなたは、私が水路を使用することができることを言いましたデータをHDFSに取り込みます。しかし、このデータはどのようにして同じテーブルに追加されますか?答えはおそらくあなたにとって非常に簡単で、あなたは私が知っていると仮定します。しかし、そのデータはどのようにテーブルに追加されますか? –

+0

すべてHiveはHDFS上のメタデータです。 HDFSのパスにデータを追加すると、Hiveはそれを照会することができます –

+0

私はあなたが私の質問を理解するとは思わない。 Hiveを使用してHDFS上のデータを照会できることを理解しています。しかし私はそれらをすべて同じテーブルの一部にしたい。明確にするために、私がMySQLであったと仮定しましょう。データが入ってくると、それを同じテーブルに挿入するだけで、同じテーブルでクエリを作成できます。これは私が望むことです。データが入ってくる次の10年間は​​、プロセスが同じテーブルにデータを追加するため、クエリで同じテーブルをクエリします。 –

関連する問題