本文解釋了如何通過在另一個case類中嵌套case類,將一個扁平的DataFrame轉換為一個嵌套結構。
您可以使用此技術構建一個JSON文件,然後將其發送到外部API。
定義嵌套模式
我們將從一個扁平的數據幀開始。
使用這個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寫入JSON文件
使用重新分配().write.option函數將嵌套的DataFrame寫入JSON文件。
% scala nestedDF.repartition (1) .write.option(“多行”,“真正的”). json(“dbfs: / tmp /測試/ json1 /”)
例如筆記本電腦
檢查DataFrame來嵌套JSON示例筆記本查看這些步驟的執行情況。