我想写一个Spark Dataframe与修复模式。我正在尝试:
from pyspark.sql.types import StructType, IntegerType, DateType, DoubleType, StructField
my_schema = StructType([
StructField("seg_gs_eur_am", DoubleType()),
StructField("seg_yq_eur_amt", DoubleType()),
StructField("seg_awd_eur_amt", DoubleType())
])
my_path = "<some_path>"
my_spark_df.write.format("delta").schema(my_schema).save(my_path)
我收到错误:
第一个月ChatGPT
回复我"看起来您正在尝试对DataFrameWriter对象使用. schema方法,但此方法在该对象上不可用。相反,您可以在创建DataFrame时对DataFrameReader对象使用. schema方法来指定架构。"
但这对我来说没有意义,因为我很确定我可以设置模式(几年前),但我不知道,现在也找不到。
1条答案
按热度按时间h7wcgrx31#
正如您已经猜到的,可以通过删除.schema(my_schema)来修复代码,如下所示
我的SparkDF.写.格式(“增量”).保存(我的路径)
我想您可能对模式应用于何处感到困惑,您需要使用模式创建一个 Dataframe (使用一些伪Seq或rdd),在此期间您需要提及模式。当您调用DataFrameWriter时,没有提供模式的选项,它会推断调用writer API的 Dataframe 的模式。
您可以像下面这样修改初始 Dataframe 的模式,并将此中间 Dataframe 用于write API调用