2017-08-26 6 views
1

をハイブに入社ない私はどのようにこの結合ず起こるpySparkがどのようにTempViewテーブルはテーブル

df1.createOrReplaceTempView("mydata") 

    df2 = spark.sql("Select md.column1,md.column2,mht.column1 \ 
        from mydata md inner join myHivetable mht on mht.key1 = md.key1 \ 
        where mht.transdate between '2017-08-01' and '2017-08-10' ") 

に参加するtempViewとして登録されたデータフレームとハイブテーブルを持っています。 Hiveテーブルのデータボリュームが非常に高い場合は、ハイブテーブルをメモリに読み込み、tempViewテーブルをハイブに書き込むようにします。

詳細については最初の答えの後に、次の追加:

我々はTABLE_Aと呼ばれるスパークにtempViewよう

100行があるとしましょう。

ハイブTABLE_Bで1億行のテーブル。

次の手順でTABLE_AとTABLE_Bを結合する必要があります。

TABLE_Bに日付範囲の条件があります。

テーブルTABLE_Bはサイズが大きいので。ハイブ・ジョインを行うために、テーブル全体をTABLE_B全体をメモリに読み込んだり、テーブル・Aをテンポラリ・スペースに書き込んでハイブ・ジョインを行うか、インテリジェントな方法でパフォーマンスを向上させることができます。

答えて

1

ハイブ・コンテキストは、メタストア内の登録された一時テーブル/ビューの数。これにより、SQLのようなクエリ操作をデータに対して実行することが可能になります。それでもそうでない場合と同じパフォーマンスが得られます。

これに関するいくつかのより多くの情報がhere

+0

はい、そうですhereを読み取ることができます。 SparkのtempViewとしてTABLE_Aという100行があるとします。私はHive TABLE_Bに10億行のテーブルを持っています。次のステップとして、これらを結合する必要があります。2. TABLE_Bに日付範囲条件があります。テーブルTABLE_Bのサイズが大きいためです。 Hake Joinを行うためにTABLE_B全体をメモリに読み込んだり、Have Joinのテーブル空間にTABLE_Aを書き込んだりすると、パフォーマンスのための結合を行う最良の方法がわかります。 – Nav

+0

Sparkは非常にスマートですのデータ。 10億行がある場合は、十分にプロビジョニングするために(少なくとも8GBのエグゼキュータ・メモリー)、単一のノード内のメモリーにすべてをロードするわけではありません – karthikr

関連する問題