【问题标题】:Pyspark - How to set the schema when reading parquet file from another DF?Pyspark - 从另一个 DF 读取镶木地板文件时如何设置模式?
【发布时间】:2020-06-09 11:01:46
【问题描述】:

我有带有架构的 DF1:

df1 = spark.read.parquet(load_path1)
df1.printSchema()

root
 |-- PRODUCT_OFFERING_ID: string (nullable = true)
 |-- CREATED_BY: string (nullable = true)
 |-- CREATION_DATE: string (nullable = true)

和 DF2:

df2 = spark.read.parquet(load_path2)
df2.printSchema()
root
 |-- PRODUCT_OFFERING_ID: decimal(38,10) (nullable = true)
 |-- CREATED_BY: decimal(38,10) (nullable = true)
 |-- CREATION_DATE: timestamp (nullable = true)

现在我想合并这两个数据帧..
有时,由于架构不同,当我尝试 UNION 这两个 DF 时会出错..

如何设置 DF2 与 DF1 具有完全相同的架构(在加载期间)?

我试过了:

df2 = spark.read.parquet(load_path2).schema(df1.schema)

得到错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'StructType' object is not callable

或者我应该转换它(一旦读取 DF2)?

谢谢。

【问题讨论】:

    标签: dataframe apache-spark pyspark schema


    【解决方案1】:

    .schema() 移动到 .parquet() 之前,然后 spark 将读取具有指定架构的 parquet 文件

    df2 = spark.read.schema(df1.schema).parquet(load_path2)
    

    【讨论】:

      猜你喜欢
      • 2021-03-15
      • 2022-06-16
      • 2021-03-19
      • 2018-08-13
      • 2021-11-10
      • 1970-01-01
      • 1970-01-01
      • 2016-09-12
      相关资源
      最近更新 更多