2017-11-09 5 views
-1

このユースケースは、幅の狭いテーブル(15フィールド)ですが、データセット全体(10億行単位)に対して大きな処理を行っています。スパークオンパーキングとハイパースパーク(寄木張りフォーマット)

ENV::私はより良いパフォーマンスを提供するものの組み合わせ疑問に思ってCDH5.8を/行ファイル(寄木細工) 上

  • スパーク(寄木細工のフォーマットとして)Hiveのテーブルに2.0

    1. スパークスパーク特定の製品やユースケースの追加のコンテキストなし
  • +0

    で速くSparkSQLハイブのクエリよりも桁違いだったことに気づきましたScalaのラムダについてはSparkSQLの式(スカラ型を直接使用し、オブジェクトへのラウンドトリップはしません)が遅くなりますが、それは通常は限界的です。そして、私がうまく覚えていれば、ORCベクトル化リーダーはSpark 2.3に予定されていますが、Parquetはすでにベクトル化をサポートしています。それ以外は...私はScalaのportmanteau式がそんなに多くのソーセージ文字列のようにばかげていることを知っている古いSQLユーザーですが、それは私の個人的な意見です(set-based semantics、baby!) –

    +1

    SparkSQLの行ファイル(寄木細工ORC) 。行ファイルはどういう意味ですか? orcは柱状の記憶権です – Achyuth

    答えて

    0

    - 私は2つの理由からハイブのテーブルの上にSparkSqlに投票したい:

    1. sparksqlではdatabricksがsparksqlに異なる最適化を書き込んだので、sparksqlはコアスパークよりも優れています。これはabstactionが高く、コードを最適化する能力を与えます(プロジェクトタングステンについて読む)。場合によっては、手作業で書かれたspark core codeが良いでしょうが、プログラマーに内部の深い理解が求められます。さらに、sparksqlは制限されている場合があり、低レベルのメカニズムを制御することはできませんが、常にコアrddを使用するようにフォールバックできます。

    2. ハイブとファイルではない - 私は外部のメタストアを持つハイブを想定しています。 Metastoreは "テーブル"のパーティションの定義を保存します(ファイルの中にはディレクトリが存在する可能性があります)。これは良いパフォーマンスのために最も重要な部分の1つです。私。ファイルを操作するときにsparkがこの情報を読み込む必要があります(これは時間がかかる可能性があります。たとえばs3のリスト操作は非常に遅いです)。したがって、メタストアではこの情報を簡単かつ迅速に取得できます。

    0

    ここには2つのオプションしかありません。ファイルにスパーク、またはハイブにスパークします。 SparkSQLは両方で動作し、RDDではなくDataset APIを使用することをお勧めします。

    データセットスキーマを自分で定義することができれば、Hiveへの特別なホップをバイパスしているため、 Metastore。

    私は(スパーク1.3)年前に簡単なテスト自分自身をやったとき、私はCSVファイルとして100000個の行を抽出することは既知の問題がありますが、同じLIMIT

    関連する問題