我正在尝试将架构合并在一起。不幸的是,其中两个是不同的..并且我收到一个错误org.apache.spark.SparkException:合并架构失败。无法合并不兼容的数据类型string和double
我试过几种方法把它们合并在一起,但是我找不到修正这个错误的方法。有人知道如何处理这个错误吗?
谢谢
df = spark.read.format("parquet").load(result.db_path)
old_columns = df.columns
for col in old_columns:
df = df.withColumnRenamed(col,col.lower())
df = df.withColumn("tenant", lit(payload.tenant))\
.withColumn("filename", input_file_name())
write_format = 'delta'
save_path = f'dbfs:_________{endpoint.lower()}/'
db = f'--------'
name = f'{endpoint.lower()}_raas'
table_name = f'{db}.{name}'
if not spark._jsparkSession.catalog().tableExists(db,name):
# Write the data to its target.
df.write \
.format(write_format) \
.save(save_path)
# Create the table.
spark.sql("CREATE TABLE " + table_name + " USING DELTA LOCATION '" + save_path + "'")
else:
df.write.format(write_format).mode("overwrite").save(save_path)```
I expect to merge schema with different values. Any ideas would be really helpful.
1条答案
按热度按时间eqqqjvef1#
如果您尝试通过一次导入加载所有内容,例如
.format().load()
,那么如果您的文件彼此之间模式不兼容,您将无法继续。在这种情况下,您可以做的是 * 分组 * 您知 prop 有兼容模式的文件,以便您可以转换它们(例如,
String
到Double
),最后,将其与其余文件合并(第二组)。例如,假设这是您的案例:
您可以一起读取文件
file1
和file3
,将file2
与String
到Int
的强制转换合并。