本文解釋了如何將一個扁平的DataFrame嵌套結構,通過嵌套類在另一個案件類。
您可以使用這種技術來構建一個JSON文件,然後可以發送到外部API。
定義嵌套模式
我們首先DataFrame夷為平地。
使用這個例子DataFrame,我們使用case類定義一個自定義的嵌套模式。
% scala類empId (id:字符串)案件類depId (dep_id:字符串)案例類細節(id: empId,名字:字符串,位置:字符串,depId: depId)類代碼(manager_id:字符串)案件類報告(報告:數組(代碼))案例類hireDate (hire_date:字符串)案例類emp_record (emp_details:細節,incrementDate:字符串,委員會:字符串,國家:字符串,hireDate: hireDate, reports_to:報告)
您可以看到case類嵌套在另一個不同的數據類型。
夷為平地DataFrame轉換為一個嵌套結構
使用DF.map將每一行對象傳遞給相應的case類。
% scala spark.implicits進口。_ val nestedDF = DF。地圖(r = > {val empID_1 = empId (r.getString (0)) val depId_1 = depId (r.getString (7)) val details_1 =細節(empID_1, r.getString (1) r.getString (2), depId_1) val code_1 =代碼(r.getString (3) val reporting_1 =報告(數組(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例子執行這些步驟。