我有一個8節點羣集和予加載從這樣的JDBC源的兩個dataframes:有沒有辦法控制集羣中節點間火花分區的分佈?
positionsDf = spark.read.jdbc(
url=connStr,
table=positionsSQL,
column="PositionDate",
lowerBound=41275,
upperBound=42736,
numPartitions=128*3,
properties=props
)
positionsDF.cache()
varDatesDf = spark.read.jdbc(
url=connStr,
table=datesSQL,
column="PositionDate",
lowerBound=41275,
upperBound=42736,
numPartitions=128 * 3,
properties=props
)
varDatesDF.cache()
res = varDatesDf.join(positionsDf, on='PositionDate').count()
我可以一些從隔板均勻地分佈在集羣節點的分佈式應用程序UI的存儲標籤。但是,我不能說的是它們是如何分佈在節點上的。理想情況下,兩個數據幀都將以這樣的方式分發,即連接總是本地的節點,或者對執行者來說更好。
換句話說,包含PositionDate =「01 Jan 2016」的記錄的positionsDF dataframe分區是否與包含PositionDate =「01 Jan 2016」的記錄的varDatesDf數據框分區位於同一執行器內存空間中?他們會在同一個節點上嗎?或者它只是隨機的?
有什麼方法可以查看哪些節點在哪個節點上?
在整個節點上,火花是否以確定性的方式使用列鍵來創建分區?他們將始終是節點/執行器本地?