0
SparkContextとHiveで大きなデータセットを読み込んでいるとします。このデータセットはSparkクラスタに分散されます。たとえば、何千もの変数の観測値(値+タイムスタンプ)。は、Dataframe.toPandasは常にドライバノードまたはワーカーノードにありますか?
これで、データを整理/分析するためにいくつかのmap/reduceメソッドまたは集計を使用しました。たとえば、変数名でグループ化します。
一度グループ化すると、各変数のすべての観測(値)をtimeseries Dataframeとして取得できます。あなたは今DataFrame.toPandas
def myFunction(data_frame):
data_frame.toPandas()
df = sc.load....
df.groupBy('var_name').mapValues(_.toDF).map(myFunction)
- を使用している場合、これは各 ワーカーノード上で(可変あたり)パンダDATAFRAMEに変換、または
- は、ドライバのノード上で常にパンダデータフレームであり、データがゆえですワーカーノードからドライバに転送されますか?
したがって、マップ機能内でPandas Dataframe APIを使用すると、ワーカーノードでもより多くのコンボ敵のメソッドを使用できます。たとえば、マップステップでその情報だけを分析して結果を返すなどです。 – Matthias
はい、それはSparkRの 'dapply'と同様に可能です。望ましいパフォーマンスを得ることは難しいかもしれませんが、リソースの割り当てと並列性のバランスをとる必要があります。 – zero323
あなたは私のヒーローです。私はまだ初心者ですが、改善しています。多分あなたは[その1つで]私を助けることができます(http://stackoverflow.com/questions/39155954/how-to-do-a-nested-for-each-loop-with-pyspark)。 – Matthias