ビッグデータは、それを書くのSQLではないでしょうか? - ハイブ:SQLは、MapReduceの実行SparkSQLを使用して解析:対話型のクエリOLAPドルイド/麒麟:事前に計算に重点を置いて、同じOLAP SQLはハイブすばやくドリル/インパラ/プレストよりも、スパークランで解析しました

小さなニーズ分析に参加した祖先のバック私は製品が文であると言うことを憎むかかとされる卒業生:

 

「それはそう長く行うには、SQLを書かれていません。」

 

私は、会社のウィキで発行された記事を書いたので、私は確かに、それを容認できないと、いじめ私に、兄を行きます:

640?wx_fmt = PNG

 

見るために皆のための投稿、我々はいくつかの機密性の高いコンテンツを省略しました。

もちろん、言葉の内部バージョンは穏やかな、ヒッヒッヒになります


SQLを書くためにはどこ?

 

質問の高いポイントは、SQLとエンジンの種類を尋ねていますか?

 

SparkSQL、ハイブ、フェニックス、ドリル、インパラ、プレスト、ドルイド、麒麟(ここではSQLエンジン広い意味、我々は行き止まりを持っていません)

 

私は単にあなたが今、最初の問題で菅ブーカーンあり、これらのものに1つの文章にまとめて理解する必要があります。

  • ハイブ:MapReduceの持つSQL構文解析された実行

  • SparkSQL:SQLは、ハイブ迅速よりも、スパークランで解析しました

  • フェニックス:HBaseの上でSQLのMapReduceフレームワークを実行しているバイパス

  • ドリル/インパラ/プレスト:対話型のクエリOLAPは、ドレメルグーグルものに似ている、ここでの違いは、言うことではありません

  • ドルイド/麒麟:事前に計算に重点を置いて、同じOLAP

 

これは多くの問題を含んでおり、これらのコンポーネントは、研究プロセスに精通していない、学生はヶ月以上を費やす必要があります。

たとえば:需要は、リアルタイムまたはオフライン解析で計算されますか?

データは、増分データまたは静的データのですか?

どのくらいのデータ?

私たちは、長い応答時間を許容することができますか?

短い、機能、パフォーマンス、安定性、運用・保守困難で、これらの開発の難しさが考慮されるべきです


どこSQLの実装上のデータ?

 

選挙エンジンが書き込みを開くことができるために、あなたは思いますか?あまりにもナイーブ!

ツールのほとんどは、クエリエンジンは、それを格納している上記の?

「何を、なぜも、ストレージを管理?」

かかわらず、ストレージの、それはそれではありませんmysqlのPBレベルのデータを存在している必要があります...

 

実際には、ヘルプ最適化性能であるようにmysqlの、クエリエンジンと緊密に結合されているメモリのようなリレーショナルデータベースは、あなたがそれらを離れて分割することはできません。

SQLエンジンおよび大型データシステムは、柔軟性を得るために、一般にデータ記憶システムから独立しています。これは、データと性能の量を考慮することによるものです。

 

これはさらに多くの問題があります。まず、エンジンがサポートするドッキングは、どのように便利で効率的な問い合わせを維持するためにどのストレージを見つけます。

ツールは、(これはごく一部です)、私はマップ、感触を持っている永続性を保存することができます

640?wx_fmt = PNG


SQLを記述するための構文何で?

 

あなたが書いて開いた店やクエリに得ることができると思いますか?あなたは全世界が同じSQLであると思いますか?ありません!

いないすべてのエンジンは、参加サポートしています。

すべての異なるが正確に計算されるわけではありません。

いないすべてのエンジンは、ページ制限をサポートしています。

また、複雑なシナリオを扱う場合は、多くの場合、書き込みコードやり方こと、それをカスタマイズする方法を、次に、カスタムSQL方法が必要です。

 

いくつかの簡単な共通栗:

 

そのようなAのSQLそれ見たことありますか?

  1. select `user`["user_id"] from tbl_test ;

 

この操作は今までそれを見ましたか?

  1. insert overwrite table tbl_test select * from tbl_test  where id > 0;

 

FMLは、これはそれをロックしていないのだろうか?ハイブはありませんでしたが、これは推奨されません。

だから、書くことができます

  1. from tbl_test insert overwrite table tbl_test select * where id > 0;


より効率的な方法でSQLを書くためにどのように?

 

まあ、すべてがアップケリ、我々は最終的に書き込みSQLへの喜びを開始することができます。

小さな文の祖先が最初にまとめるために会社に来たとき、私はSQLプロシージャを記述します。

「FMLは、このSQLは、100の以上の行を持っています!」

 

ファクトテーブル、様々なデータのディメンション表が繰り返し加わることは、その後も別の時間からのデータを結合終え、だけでなく、$#はありませんが、参加@%^ $#^ ...

 

人々は吐き気を書いた方法を知っている必要があり、言ってはいけない(100行以上を省略)

 

最後に完成し、苦難はQiaoxia入力喜びに満ち、この段階に来...

過去1分単位の時間...

10分...

30分...

1時間...

2時間...

......

 

このように何の成果もないだろうに行く、待ってはいけません。

 

それに正直な表情をログに記録し、ログを見ても、学習がたくさんあります。

 

まず、あなたがこのSQLを実行する方法をされて把握する必要があり、下部には、MapReduceのか、火花や他の分析アプリケーションであるとなって入れ、他のインターフェースを取得します。

その後把握データを取得する方法であるしなければならない、何もデータスキューはどのように最適化するには、発生しませんがあります。

同時に、あなたは注意を払うリソース、CPU、メモリ、IOなどに持っています


遂に

 

製品の需要は再び、既存のシステムは、上記の4つのステップを達成することはできませんし、再びそれを投げます...

はい、私たちはSQLを書いています。

おすすめ

転載: www.cnblogs.com/bonelee/p/12441530.html