你好所有的,
背景:
今天我有一個問題與磚使用pyspark-sql三角洲表和寫作。dataframe由之間做一個內連接兩個表的表,我想寫一個δ表。表有時甚至不會做一個行數(count()),但有時因為某些原因,和輸出通常是大約19億行,它甚至在這些情況下會顯示(顯示())。
問題:
當要寫這個dataframe成δ表它似乎越來越困在一個階段。命令我用寫表如下:
(df .write .format(“δ”).mode write_mode .option (“replaceWhere”、“eventDate eventDate < > ={}和{}”。形式at(start_date_str, end_date_str)) .option("overwriteSchema", "true") .partitionBy("eventDate") .saveAsTable("default.df") )
棱的問題一旦它到達一個階段和“查詢過濾文件”說:
現在,當試圖調查特定階段(1493),我看到下麵的:
誰能給我了解發生了什麼嗎?我運行這段代碼超過10個小時什麼事也沒發生,它將永遠困在最後階段,同一消息的“過濾查詢文件。”From my understanding databricks optimizes delta tables really well, and I even have a partition on the table which I am trying to write. I am not a memory/cache expert so I am not sure if things can't be loaded into cache quick enough for it to write. Is there any insight anyone can provide?
信息集群:
磚的運行時版本:10.2(包括Apache火花3.2.0,Scala 2.12)
工作類型:i3.2xlarge 61 gb內存,8核
驅動程序類型:i3.4xlarge 122 gb內存,16個核心
謝謝你!
@Ljuboslav如
可以有多個原因查詢正在采取更多的時間,在這一階段的元數據查找活動發生,請檢查下麵的事情
https://docs.m.eheci.com/spark/latest/spark-sql/language-manual/delta-vacuum.html
https://docs.m.eheci.com/spark/latest/spark-sql/language-manual/delta-optimize.html
請讓我們知道如果你仍然麵臨同樣的問題
一秒鍾@Hubert杜德克,讓我放棄,當我創建內部加入我也把一些條件:
data_to_save =(表1 . join(表(表1)。用戶= = table2.user) &(坳(eventTime) > =坳(“tableTime”)) & (datediff (table1.eventDate table2.tableEventDate) < =窗口),“內部”))
這是表我想寫一個三角洲表。
你的代碼片段,這是我需要的東西放在寫聲明我已經加入語句中或之前我上麵貼的?
至於你的問題:
每一行可能沒有一個惟一的id,例如允許考慮10行——這10行,我們可能有3行已在一列稱為“用戶id”是一樣的,但在另一個專欄叫“eventId”是不同的。對我來說是很重要的保持這些行分離由於擁有相同的用戶id。我希望這回答了你的問題。
@Ljuboslav如
可以有多個原因查詢正在采取更多的時間,在這一階段的元數據查找活動發生,請檢查下麵的事情
https://docs.m.eheci.com/spark/latest/spark-sql/language-manual/delta-vacuum.html
https://docs.m.eheci.com/spark/latest/spark-sql/language-manual/delta-optimize.html
請讓我們知道如果你仍然麵臨同樣的問題