2017-09-18 13 views
0

私は100行[名前、年齢、日付、時間]のデータフレームを持っています。私は、このデータフレームを異なる日付の値で分割する必要があります。これらの100行に20の異なる日付の値があるとしましょう。次に、各ハイブQLがハイブテーブルでこれらの各パーティションに参加する20の並列ハイブクエリを生成する必要があります。ハイブテーブル - [部門、会社、日付]は日付フィールドで区切られています。PySpark - データフレームの各行をループし、ハイブクエリを実行します。

ハイブテーブルが巨大なので、これらの結合を複数の小さな結合に最適化してから、これらの結果を集計する必要があります。どのように私はこれを達成することができますに関するすべての推奨事項?

+0

期待される出力を提供できますか? 1つの結合だけを行い、100行のデータフレームをブロードキャストすることを検討する必要があります – MaFF

答えて

0

これは単一のクエリで実行できます。 dfを日付に分割して結合します。あなたが小さいデータ(〜10MB)を持っている最初のテーブルをブロードキャストに参加している間。ここに例があります: -

df3 = df1.repartition("date").join(
F.broadcast(df2.repartition("date")), 
"date" 
) 
#df2 is your dataframe smaller dataframe in your case it is name, age, date, ,hour. 
#Now perform any operation on df3 
関連する問題