如何在执行spark dataframe.write().insertInto(“table”)时确保列顺序正确?

如何在执行spark dataframe.write().insertInto(“table”)时确保列顺序正确?,dataframe,apache-spark,databricks,azure-databricks,Dataframe,Apache Spark,Databricks,Azure Databricks,我使用以下代码将dataframe数据直接插入DataRicks delta表: eventDataFrame.write.format("delta").mode("append").option("inferSchema","true").insertInto("some delta table")) 但是,如果创建detla表时使用的列顺序与dataframe列顺序不同,则这些值会混淆,然后不会写入正确的列。如何维持秩序?有没有标准的方法/最佳实践可以做到这一点?这相当简单- ` ` 所

我使用以下代码将dataframe数据直接插入DataRicks delta表:

eventDataFrame.write.format("delta").mode("append").option("inferSchema","true").insertInto("some delta table"))

但是,如果创建detla表时使用的列顺序与dataframe列顺序不同,则这些值会混淆,然后不会写入正确的列。如何维持秩序?有没有标准的方法/最佳实践可以做到这一点?

这相当简单-

`

`

所以对你来说会的

parent_df=   spark.read.table("some delta table") 
eventDataFrame.select(parent_df.columns).write.format("delta").mode("append").option("inferSchema","true").insertInto("some delta table"))

使用saveAsTable列顺序与此无关,spark将通过列名找到正确的列位置

eventDataFrame.write.format(“delta”).mode(“append”).option(“inferSchema”、“true”).saveAsTable(“foo”)

来自spark文档

DataFrame架构中的列顺序不需要与现有表中的列顺序相同。与insertInto不同,saveAsTable将使用列名查找正确的列位置

parent_df=   spark.read.table("some delta table") 
eventDataFrame.select(parent_df.columns).write.format("delta").mode("append").option("inferSchema","true").insertInto("some delta table"))