pyspark 属性错误:"DataFrameWriter"对象没有属性"schema"

piah890a  于 2022-12-28  发布在  Spark
关注(0)|答案(1)|浏览(316)

我想写一个Spark Dataframe与修复模式。我正在尝试:

  1. from pyspark.sql.types import StructType, IntegerType, DateType, DoubleType, StructField
  2. my_schema = StructType([
  3. StructField("seg_gs_eur_am", DoubleType()),
  4. StructField("seg_yq_eur_amt", DoubleType()),
  5. StructField("seg_awd_eur_amt", DoubleType())
  6. ])
  7. my_path = "<some_path>"
  8. my_spark_df.write.format("delta").schema(my_schema).save(my_path)

我收到错误:
第一个月
ChatGPT回复我"看起来您正在尝试对DataFrameWriter对象使用. schema方法,但此方法在该对象上不可用。相反,您可以在创建DataFrame时对DataFrameReader对象使用. schema方法来指定架构。"
但这对我来说没有意义,因为我很确定我可以设置模式(几年前),但我不知道,现在也找不到。

h7wcgrx3

h7wcgrx31#

正如您已经猜到的,可以通过删除.schema(my_schema)来修复代码,如下所示
我的SparkDF.写.格式(“增量”).保存(我的路径)
我想您可能对模式应用于何处感到困惑,您需要使用模式创建一个 Dataframe (使用一些伪Seq或rdd),在此期间您需要提及模式。当您调用DataFrameWriter时,没有提供模式的选项,它会推断调用writer API的 Dataframe 的模式。
您可以像下面这样修改初始 Dataframe 的模式,并将此中间 Dataframe 用于write API调用

  1. df.withColumn("new_column_name",$"old_column_name".cast("new_datatype"))

相关问题