在Apache Spark DataFrame中投射Parquet文件的数据类型

时间:2018-10-30 08:49:56

标签: apache-spark apache-spark-sql parquet

我大约有4k个Parquet文件,其中包含具有〜250个不同字段的大型嵌套对象,其中大多数是可选的。大约一半的文件是由旧模式生成的,该旧模式包含嵌套字段的错误数据类型(int)。另一半使用的是正确的架构,该架构对该嵌套字段使用了正确的数据类型(双精度)。

大多数工具(Spark,Hadoop,PrestoDB)无法正确解析/读取此信息,因为整数不能转换为双精度。读取所有这些文件并修改DF中嵌套字段的值/类型的最佳方法是什么?

我尝试使用withColumn函数来修改此字段,但无法访问嵌套字段并对其进行修改。

JSON中的嵌套结构示例:

{
    "request": {
        "source": {
            "website": {
                "id": 1232,
                "category": 3.4
            }
        }
     },
    "event": {
    }
}

在这种情况下,“请求”,“事件”,“源”和“网站”字段都是可选的。 “类别”键的数据类型错误,应进行强制转换/转换。

0 个答案:

没有答案