我正在从 PostgresSQL 创建一个 parquet 文件,它的所有内容都标记为 varchar 列。一旦我们在 ADLS 中拥有文件,我们希望使用 Python/Pyspark 根据 Azure databricks 中的日期、整数、varchar 字段等数据来转换数据类型。
相同的代码需要由多个文件使用具有不同的模式,因此需要一个通用过程,没有硬编码值。
我有用户 inferSchema=True 但它仍然将 int 读取为字符串。 所以想要一种自动投射字段的方法
您可以将文件中的前 10 行读入 pandas 数据帧。
然后使用
pandas.DataFrame.convert_dtypes
函数将字符串数据类型转换为最合适的数据类型。
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.convert_dtypes.html
将该 pandas 数据帧转换为 pyspark 数据帧。
获取 pyspark 数据框的架构使用
pyspark.sql.DataFrame.schema
https://spark.apache.org/docs/3.1.3/api/python/reference/api/pyspark.sql.DataFrame.schema.html