@Chetan Kardekar:
在這種情況下休伯特的回答是不相關的。他的回答可能是正確的如果有人執行數據倉庫場景有主鍵等,完全使用SQL。jmaki同樣API代碼通常不會使用MERGE語句。
我見過一個開放拉請求這個功能,很多人都問同樣的但不知道為什麼工程團隊猶豫來實現它。我寫了一個出租汽車司機代碼執行相關操作的返回列表寫分區可以直接送入spark.write.format .mode(“δ”)(“覆蓋”)。選項(“replaceWhere”, writepar) .save ()聲明。
def _get_partitions(火花:SparkSession, df, partition_col_list):“”“創建分區的列表輸入dataframe,基於分區列。:param火花:火花會話。:param df:輸入dataframe。:param partition_col_list:分區列輸入dataframe列表。返回:輸入的分區列表dataframe df”“”我。dtypes:如果我[1](“日期”、“時間戳”):df = df。withColumn(我[0],F.col(我[0]).cast (StringType ())) write_par_temp = df.select (partition_col_list) .distinct () .rdd.collect () write_par_temp2 = str (str (el)。替換(“行”、“”)。取代(“(”、“”).replace (“)””、“)。替換(”、“,”、“)的el write_par_temp])。取代(' ('," ")。替換(“]”,“”)。替換(“”、“”)。替換(“(”、“)或“)len_par len (write_par_temp2) write_par = = write_par_temp2 [: len_par - 1] +)的打印(“write_par: {}”.format (write_par))返回write_par