問題
您有一個現有的Delta表,其中有幾個空列。您需要使用來自原始Parquet文件的數據填充或更新這些列。
解決方案
在這個例子中,有一個beplay体育app下载地址表,它是一個已有的Delta表。它有一個缺少值的地址列。更新後的數據以Parquet格式存在。
- 創建一個DataFrame從Parquet文件中使用Apache Spark API語句:
%python updatesDf = spark.read.parquet("/path/to/raw-file")
- 的內容updatesDF DataFrame:
% python顯示器(updatesDf)
- 創建一個表updatesDf DataFrame。在本例中,它被命名更新。
% python updatesDf.createOrReplaceTempView(“更新”)
- 檢查更新表的內容,並將其與beplay体育app下载地址:
% python顯示器(客戶)beplay体育app下载地址
- 使用合並成方法合並數據更新表變為原來的beplay体育app下载地址表格
%sql合並到客戶使用客戶的更新beplay体育app下载地址。customerId =來源。customerId WHEN MATCHED THEN UPDATE SET address = updates。地址WHEN NOT MATCHED THEN INSERT (customerId, address) VALUES (updates.customerId, updates.address)
在這裏,beplay体育app下载地址是具有地址缺少值的列。更新表是否從DataFrame updatesDf,它是通過從原始文件讀取數據而創建的。的地址的值填充原始Delta表的列更新控件中的任何現有值地址列。
如果更新控件中尚未包含的客beplay体育app下载地址戶beplay体育app下载地址客戶表,然後該命令添加這些新的客戶記錄。