將扁平的DataFrame轉換為嵌套的JSON

如何使用嵌套的case類將扁平的DataFrame轉換為嵌套的JSON。

寫的亞當Pavlacka

最後發布時間:2022年5月20日

本文解釋了如何通過在另一個case類中嵌套case類,將一個扁平的DataFrame轉換為一個嵌套結構。

您可以使用此技術構建一個JSON文件,然後將其發送到外部API。

定義嵌套模式

我們將從一個扁平的數據幀開始。

例子DataFrame夷為平地。

使用這個DataFrame示例,我們使用case類定義了一個自定義嵌套模式。

%scala案例類empId(id:String)案例類depId(dep_id:String)案例類details(id:empId,名稱:String,位置:String,depId:depId)案例類code(manager_id:String)案例類reporting(reporting:Array[code])案例類hireDate(hire_date:String)案例類emp_record(emp_details:details,incrementDate:String,commission:String,country:String,hireDate:hireDate,reports_to:reporting)

可以看到,case類彼此嵌套不同的數據類型。

將扁平的數據幀轉換為嵌套結構

使用DF.map將每個行對象傳遞給相應的case類。

% scala spark.implicits進口。_ val nestedDF= DF。map(r=>{val empID_1= empId(r. getstring (0)) val depId_1 = depId(r. getstring (7)) val details_1=details(empID_1,r. getstring (1),r. getstring (2),depId_1) val code_1=code(r. getstring (3)) val reporting_1 = reporting(Array(code_1)) val hireDate_1 = hireDate(r. getstring (4)) emp_record(details_1,r. getstring (8),r. getstring (6),r. getstring (9),hireDate_1,reporting_1)})

這將創建一個嵌套的DataFrame。

嵌套DataFrame示例。

將嵌套的DataFrame寫入JSON文件

使用重新分配().write.option函數將嵌套的DataFrame寫入JSON文件。

% scala nestedDF.repartition (1) .write.option(“多行”,“真正的”). json(“dbfs: / tmp /測試/ json1 /”)

例如筆記本電腦

檢查DataFrame來嵌套JSON示例筆記本查看這些步驟的執行情況。