【问题标题】:How read the data in a spark DF when column name changes and data type changes列名更改和数据类型更改时如何读取 Spark DF 中的数据
【发布时间】:2019-10-08 21:35:03
【问题描述】:

我有一个具有以下架构的镶木地板数据,

Id:int,
Name:String

在稍后阶段,新的传入数据模式已更改为

Id:double/long,
NAME:String
  1. 类型改变
  2. 字段名称更改

我在同一个文件夹中有两个 parquet 架构数据。我如何读取 spark.read.format("parquet").load("") 中的两个架构?

任何专家的建议都会有所帮助。

【问题讨论】:

    标签: apache-spark apache-spark-sql parquet


    【解决方案1】:

    通常在这种情况下,我会创建此表的 v2 并隔离我的镶木地板文件。从技术上讲,这是两个不同的表。

    如果您需要将它们重新绑定在一起,则可以创建第二层并将这两个表流式传输到一个新表中。

    【讨论】:

      【解决方案2】:

      在一次性场景中,建议转换数据类型并重写目标 parquet 文件。

      scala> val  df = Seq((1, "as"), (2, "fd")).toDF("a", "b")
      df: org.apache.spark.sql.DataFrame = [a: int, b: string]
      
      scala> df.show
      +---+---+
      |  a|  b|
      +---+---+
      |  1| as|
      |  2| fd|
      +---+---+
      
      scala> df.withColumn("a", $"a".cast("double")).show
      +---+---+
      |  a|  b|
      +---+---+
      |1.0| as|
      |2.0| fd|
      +---+---+
      

      如果不是那么你需要用相同的逻辑更新源系统

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-12
        • 2022-10-13
        • 1970-01-01
        • 2016-02-10
        • 2018-05-14
        • 2014-03-05
        • 2020-09-23
        相关资源
        最近更新 更多