我想加载增量XML数据,但对于一个字段,当有单行时,spark有时会将模式推断为struct,当有两行时,spark有时会将模式推断为数组。
单行示例(Ship在这里被推断为struct coulmn):
船舶船舶船舶ID 123 /船舶ID/船舶/船舶
双行示例(Ship在这里被推断为数组列):
Ships Ship ShipID 123 /ShipID ShipID 234 /ShipID /Ship /Ships
这会导致架构不匹配。
你能帮助如何将结构体转换为数组,或者你是否有任何其他的解决方案
我试过铸造,但没有工作。
1条答案
按热度按时间wsewodh21#
手动定义XML数据的模式,然后在dataframe中使用它。
这是用两个案例进行测试的。案例1具有单个ShipId。案例2具有两个ShipId。
输入1:
输出1|船舶||- ———————-||789|
输入2:
输出2:
参考:XML文件上的数据块文档。