我大约有4k个Parquet文件,其中包含具有〜250个不同字段的大型嵌套对象,其中大多数是可选的。大约一半的文件是由旧模式生成的,该旧模式包含嵌套字段的错误数据类型(int)。另一半使用的是正确的架构,该架构对该嵌套字段使用了正确的数据类型(双精度)。
大多数工具(Spark,Hadoop,PrestoDB)无法正确解析/读取此信息,因为整数不能转换为双精度。读取所有这些文件并修改DF中嵌套字段的值/类型的最佳方法是什么?
我尝试使用withColumn
函数来修改此字段,但无法访问嵌套字段并对其进行修改。
JSON中的嵌套结构示例:
{
"request": {
"source": {
"website": {
"id": 1232,
"category": 3.4
}
}
},
"event": {
}
}
在这种情况下,“请求”,“事件”,“源”和“网站”字段都是可选的。 “类别”键的数据类型错误,应进行强制转换/转换。