withColumnRenamed error on Unity Catalog 14.3 LTS
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-23-2024 05:19 AM - edited 02-23-2024 05:27 AM
Hi -
We are migrating to Unity Catalog 14.3 LTS and have seen a change in behavior using withColumnRenamed.
There is an error COLUMN_ALREADY_EXISTS on the join key, even though the column being renamed is a different column. The joined DataFrame does behave fine before the renaming.
We use the join syntax using a join expression like this:
df_1 = spark.createDataFrame([(1, "a", 1)], ["key", "field1", "field2"])
df_2 = spark.createDataFrame([(1, "test", 1000)], ["key", "data1", "data2"])
# this fails with UC and works find with non-UC
join_df = df_1.join(df_2, df_1.key == df_2.key)
#join_df = join_df.drop(df_2.key)
rename_df = join_df.withColumnRenamed("data1", "rename_data1")
join_df.display()
rename_df.display()
We receive this error:
[COLUMN_ALREADY_EXISTS] The column `key` already exists. Consider to choose another name or rename the existing column. SQLSTATE: 42711
A few other observations:
- If we use syntax that specifies a string for the column name the behavior is fine, join_df2 = df_1.join(df_2, "key")
- if we uncomment the drop line above it's fine
- aliasing the two tables before the join doesn't work
- it works works fine in 13.3 LTS and appeared in 14.0 and later
Is there something we are doing wrong or should be doing differently?
Thanks for your help!