1
我有被註冊爲tempView一個數據幀和蜂巢表加入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' ")
這是如何發生的聯接。如果Hive表中的數據量非常大,將會嘗試將hive表讀入內存或決定將tempView表寫入配置單元。
添加以下其他詳細信息,第一個答案後:
比方說,我們有
100行作爲tempView在星火稱爲TABLE_A。
Hive TABLE_B中的10億行表。
下一步我們需要將TABLE_A和TABLE_B結合起來。
TABLE_B上有一個日期範圍條件。
由於表TABLE_B的大小很大。將會將整個表TABLE_B讀入內存或決定將TABLE_A寫入Hadoop中的臨時空間以執行Hive Join或者它將如何智能地計算出執行連接以獲得高性能的最佳方式
是的,這是正確的。假設我們在Spark中有100行爲tempView,名爲TABLE_A。我在Hive TABLE_B中有一個10億行的表。作爲下一步,我們需要加入這些2. TABLE_B上有一個日期範圍條件。由於表TABLE_B的大小很大。 Spark會將整個表TABLE_B讀入內存中,或者決定將TABLE_A寫入Hadoop中的臨時空間以執行Hive Join,或者如何智能地找出最佳方式來執行連接以提高性能 – Nav
Spark在管理這種大量數據方面非常聰明數據的。如果它有十億行,你可能需要足夠的配置(至少8GB執行器內存),它不會將所有內容都加載到單個節點的內存中 – karthikr