仍然很難找出什麼是錯的,但我猜想的爆炸是創建一個巨大的dataframe不能配合到內存中。這很大程度上取決於你有多少行,結構體的大小。如果你有100行,結構長度/尺寸100,那麼你得到100 x100行。
我用從SparkNLP YakeKeywordExtraction提取關鍵詞,我麵臨一個問題在保存結果(數據幀火花)從Azure磚ADLS gen1三角洲表。數據幀包含字符串的結構模式格式我轉換結構模式正常格式由爆炸和提取需要的數據。當我試著保存這個數據幀的目標數據源ADLS / DB / toPandas / CSV。馬克斯的行沒有出現在數據幀將20 7列。這個筆記本的計算時間是10分鍾。但當最後Df是準備提取的數據保存正在接近55小時。我試圖遏製這一次通過實現上市的所有類型的優化技術在各種論壇/社區使用execution.arrow像。pyspark,抽樣等毫無效果。
代碼爆炸結果:
成績=結果\ .selectExpr(“爆炸(arrays_zip(關鍵詞。因此,keywords.metadata) resultTuples”) \ .selectExpr (“resultTuples(“0”)作為關鍵字”,“resultTuples [1]。得分是得分”)
代碼編寫ADLS:
scores.write.format(“δ”).save(“路徑/ / adls /文件夾/結果”)