猿问

使用 pyspark 从 S3 读取 parquet 分区表正在从分区列中删除前导零

我已经使用 EMR(pyspark) 将 pyspark 数据帧作为镶木地板写入 s3,该数据由列 (A) 分区,即 StringType()


在 S3 中,数据看起来像这样


table_path:

       A=0003

           part-file.parquet

       A=C456

           part-file.parquet

当我使用 pyspark 将其作为数据帧读回时,我在数据帧的“A”列中丢失了前导零。这是数据的样子


df =  spark.read.parquet(table_path)

df.show()


| A  | B |

| 3  | ..|

|C456| ..|

我不想在这里丢失前导零。预期结果是:


| A  | B |

|0003| ..|

|C456| ..|


LEATH
浏览 169回答 1
1回答

MMTTMM

在 delta 文档中找到了此问题的解决方案。Spark 有一个默认启用的属性。使用此属性 spark 尝试推断分区列的架构。对于字符串类型的分区列,我们可以轻松地将其关闭。# Update partition data type infer propertyfrom pyspark.conf import SparkConffrom pyspark.sql import SparkSession, Windowconf = (SparkConf().set("spark.sql.sources.partitionColumnTypeInference.enabled", False))sc=SparkSession.builder.config(conf=conf).getOrCreate()
随时随地看视频慕课网APP

相关分类

Python
我要回答