2016-06-01 5 views

答えて

-1

私はsparkを使ってCassandraのsql vs dataframeのパフォーマンス分析を行ったが、HBASEでも同じと思う。

私によれば、sqlはデータフレームアプローチよりも速く動作します。この背後にある理由は、データフレームアプローチでは、多くのJavaオブジェクトが関与している可能性があります。 SQLのアプローチでは、すべてがメモリ内で行われます。

結果を添付する。

enter image description here

+2

データフレームがrddではありません! – 54l3d

+0

@ 54l3d彼らはすべて互いの上に構築されます。結局のところ、方法に関係なく、あなたの実行計画はRDDからDAGとして抽出されます。 SQLは、複数の可能な実行計画で何をしたいのかをより抽象的な定義です。どのように良い計画を選択するかは、SQLエンジンの秘密のソースです。適切なRDD、人間または機械を生成する上で優れているのは誰ですか? – YoYo

0

私は適切にテストするために、クラスタへのアクセスを持っていないが、私には、Spark SQLだけでネイティブデータフレームコードまでコンパイルされることを想像してみてください。

私が聞いたことは、生産コードの探索とデータフレーム操作にSQLコードを使用する必要があるということです。

1

私が知る限り、彼らはパフォーマンスに関して同じように行動するべきです。 SQLは内部的にDataFrameとして動作します

0

Spark SQLは、Catalystという強力な新しい最適化フレームワークをもたらします。 Catalystを使用すると、Sparkは自動的にSQLクエリを変換し、より効率的に実行することができます。

DataFrameは、名前付き列に編成されたデータセットです。 R/Pythonのリレーショナルデータベースやデータフレームのテーブルと概念的には同等ですが、RDD(強力な型付け、強力なラムダ関数を使用する能力)の利点を提供する、より豊かな最適化を備え、Spark SQLの最適化された実行の利点エンジン。

同じ最適化アルゴリズムを使用するため、実行速度は同じになります。

2

RDDは常にOutperform DataframeとSparkSQLですが、私の経験から、DataframeはSparkSQLと比べてパフォーマンスが優れています。データフレーム関数は、spark sql.Belowリンクと比較してパフォーマンスが優れています。

Spark RDDs vs DataFrames vs SparkSQL

+0

あなたが投稿したリンクはSpark 1.6に関するものです。現在、Spark 2.0ではSparkSQLは全体のステージコード生成を利用して、最大10倍のクエリを高速化します。したがって、あなたが提供したデータとあなたが述べたものは、現在古くなっています。 – mgaido

0

参加は慎重に実装されたクエリ間で共有される可能性がある場合RDDSに参加良いオプションかもしれません。しかし、これが当てはまらない場合は、spark/catalystをspark sql内で実行してください。それはすべての最適化を行います。したがって、結合ロジックなどを維持する必要はありません。

0

Spark SQL joinとSpark Dataframe joinはほぼ同じことです。参加は実際にはボンネットの下でRDD操作に委任されます。 RDD操作の上には、spark SQL、データフレーム、データセットなどの便利なメソッドがあります。 spark sqlの場合、SQLを解析するために余計な時間を費やす必要があります。

プログラミングの面で優れています。私はコンパイル時に構文エラーを捕まえることができるので、データセットが好きです。また、シーンの背後にあるエンコードでは、データを圧縮してクエリを実行します。