我有1个表A,其中的数据具有以下格式
Desc Name
Demo1 abc.def.txt.xls
Demo2 pqr.wef.tuv.wsf
Demo3 yrd.itr.poe.kjq.sce
我还有另一个表B,其中的数据具有以下格式
Key Id
abc.def.txt 1000
pqr.wef 1001
yrd 1002
我的表C的数据格式如下:
Hie1Nam Hie1ID Hie2Name Hie2ID Hie3Name Hie3ID Hie4Name
Hie4Id Hie5Name Hie5Id
abc 1 abc.def 11 abc.def.txt 111
abc.def.txt.xls 1111
pqr 2 pqr.wef 12 pqr.wef.tuv 112
pqr.wef.tuv.wsf 1112
yrd 3 yrd.itr 13 yrd.itr.poe 113 yrd.itr.poe.kjq
1113 yrd.itr.poe.kjq.sce 11113
期望的输出如下
Desc Name Id
Demo1 abc.def.txt.xls 1000
Demo2 pqr.wef.tuv.wsf 1001
Demo3 yrd.itr.poe.kjq.sce 1002
因此,需要通过删除最后一个点和以下字符序列来拆分名称以获取其父代。它的父代或其任何祖父母或外祖父母都将在表BI中有一个条目,以获取相应的ID。
这3个表作为数据帧存储在数据块中。
如何使用spark sql或scala轻松实现这一目标?