我已經(jīng)使用 EMR(pyspark) 將 pyspark 數(shù)據(jù)幀作為鑲木地板寫入 s3,該數(shù)據(jù)由列 (A) 分區(qū),即 StringType()在 S3 中,數(shù)據(jù)看起來(lái)像這樣table_path: A=0003 part-file.parquet A=C456 part-file.parquet當(dāng)我使用 pyspark 將其作為數(shù)據(jù)幀讀回時(shí),我在數(shù)據(jù)幀的“A”列中丟失了前導(dǎo)零。這是數(shù)據(jù)的樣子df = spark.read.parquet(table_path)df.show()| A | B || 3 | ..||C456| ..|我不想在這里丟失前導(dǎo)零。預(yù)期結(jié)果是:| A | B ||0003| ..||C456| ..|
1 回答

MMTTMM
TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
在 delta 文檔中找到了此問(wèn)題的解決方案。
Spark 有一個(gè)默認(rèn)啟用的屬性。使用此屬性 spark 嘗試推斷分區(qū)列的架構(gòu)。對(duì)于字符串類型的分區(qū)列,我們可以輕松地將其關(guān)閉。
# Update partition data type infer property
from pyspark.conf import SparkConf
from pyspark.sql import SparkSession, Window
conf = (SparkConf().set("spark.sql.sources.partitionColumnTypeInference.enabled", False))
sc=SparkSession.builder.config(conf=conf).getOrCreate()
添加回答
舉報(bào)
0/150
提交
取消