本文解释了如何将一个扁平的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例子执行这些步骤。