我有一個資料框,其中包含一個欄位項,它是一個具有一組項的字串:
[{"item":"76CJMX4Y"},{"item":"7PWZVWCG"},{"item":"967NBPMS"},{"item":"72LC5SMF"},{"item":"8N6DW3VD"},{"item":"045QHTU4"},{"item":"0UL4MMSI"}]
root
|-- item: string (nullable = true)
我想將該專案作為字串陣列獲取。有人可以讓我知道是否有一種簡單的方法可以使用默認的 from_json 做到這一點嗎?
root |-- 專案:陣列(可為空 = 真)
這樣我就只有
["76CJMX4Y", "7PWZVWCG", "967NBPMS", "72LC5SMF", "8N6DW3VD", "045QHTU4", "0UL4MMSI"]
謝謝
uj5u.com熱心網友回復:
使用 spark 內置函式from_json,然后使用高階函式transform從陣列中提取專案。
Example:
//from_json we are creating a json array then extracting item from the array
import org.apache.spark.sql.functions._
df.selectExpr("""transform(from_json(item,'array<struct<item:string>>'),x->x.item) as item""").show(10,false)
// ----------------------------------------------------------------------
//|item |
// ----------------------------------------------------------------------
//|[76CJMX4Y, 7PWZVWCG, 967NBPMS, 72LC5SMF, 8N6DW3VD, 045QHTU4, 0UL4MMSI]|
// ----------------------------------------------------------------------
uj5u.com熱心網友回復:
您可以在 : 上使用 split(),然后使用 sort_array() 對值進行排序(以便您不感興趣的值位于頂部或底部,然后使用 slice() 進行過濾。
供您參考:https : //spark.apache.org/docs/latest/api/java/org/apache/spark/sql/functions.html(即使它是Java版本,它也是函式的合成串列)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/381429.html
