2
我有n列一個表,我會打電話給A.在此表中有一些我需要三列:星火加入掛起
- 增值稅 - >字符串
- 稅 - >字符串
- 卡 - >字符串
增值稅或稅可以爲空,但不能在同一時間。 對於增值稅號碼簿和稅收的每個唯一對號碼,至少有一個號碼卡。
我需要改變這個表,添加一列count_card中,我把基於卡片的數量的稅和增值稅有充分的獨特組合文字。
所以,我已經做到了這一點:
val cardCount = A.groupBy("tax", "vat").count
val sqlCard = udf((count: Int) => {
if (count > 1)
"MULTI"
else
"MONO"
})
val B = cardCount.withColumn(
"card_count",
sqlCard(cardCount.col("count"))
).drop("count")
在表BI現在有三列:
- 增值稅 - >字符串
- 稅 - >字符串
- card_count - > Int
以及對此的每項操作DataFrame很流暢。現在
,因爲我想導入新列一個表,我進行了以下連接:
val result = A.join(B,
B.col("tax")<=>A.col("tax") and
B.col("vat")<=>A.col("vat")
).drop(B.col("tax"))
.drop(B.col("vat"))
期待有原始表A和列card_count。
問題是連接掛起,獲取所有系統資源阻塞pc。
的附加細節:
- 表甲具有〜1.5M的元素和從鑲木文件中讀取;
- 表B有〜130萬個元素。
- 系統是8線程和30GB的RAM
讓我知道我做錯了