Apache spark 列名更改和数据类型更改时如何读取spark DF中的数据

Apache spark 列名更改和数据类型更改时如何读取spark DF中的数据,apache-spark,apache-spark-sql,parquet,Apache Spark,Apache Spark Sql,Parquet,我有一个具有以下模式的拼花地板数据 Id:int, Name:String 在稍后的阶段,新的传入数据架构被更改为 Id:double/long, NAME:String 改型 更改字段名 我在同一个文件夹中有两个拼花图案数据。如何在spark.read.format(“拼花”).load(“”)中读取这两个图案 任何专家的建议都会很有帮助。通常在这种情况下,我会创建此表的v2并隔离我的拼花地板文件。从技术上讲,这是两个不同的表 如果需要将它们重新绑定在一起,则可以创建第二层,并将这两个表流

我有一个具有以下模式的拼花地板数据

Id:int,
Name:String
在稍后的阶段,新的传入数据架构被更改为

Id:double/long,
NAME:String
  • 改型
  • 更改字段名
  • 我在同一个文件夹中有两个拼花图案数据。如何在
    spark.read.format(“拼花”).load(“”)中读取这两个图案


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

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


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

    在一次性场景中,建议强制转换数据类型并重写目标拼花文件

    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|
    +---+---+
    
    如果没有,则需要使用相同的逻辑更新源系统