pyspark 新接口 DataSource V2 写法 写入paimon为例
5种写入动作spark新接口 DataSource V2: 介绍: df.writeTo(...) 返回的是 DataFrameWriterV2是 Spark 3.x 引入的 DataSource V2 写接口与旧的 df.write (DataFrameWriter V1) 是两套完全不同的 API 案例: df.writeTo(paimon.bi_dwd.tb1) \ .using(paimon) \ .replace() api 区别: .create() 等价 SQLCREATE TABLE ... AS SELECT ...CTAS 表不存在建表 写数据 表已存在抛异常 .createOrReplace() 等价 SQLCREATE OR REPLACE TABLE ... AS SELECT ... 表不存在建表 写数据 表已存在先 DROP 再 CREATE相当于完整重建表并写入新数据 注意会丢失原表所有数据及表结构定义适合每次全量刷新场景 .replace() 等价 SQLREPLACE TABLE ... AS SELECT ... 表不存在抛异常 表已存在DROP CREATE 重建写入 .append() 等价 SQLINSERT INTO ... 向已有表追加数据INSERT INTO 语义 表不存在会报错不会自动建表 不支持 .using() / .tableProperty()表已存在无需配置 .overwritePartitions() 等价 SQLINSERT OVERWRITE ...动态分区模式 覆盖 DataFrame 中涉及到的分区其他分区数据保留 相当于 spark.sql.sources.partitionOverwriteModedynamic 的 INSERT OVERWRITE接口对比案例动态覆盖的分区表 且表可能不存在writer ( df_sink.writeTo(paimon.db1.tb1) .using(paimon) .tableProperty(bucket, 16) .tableProperty(bucket-key, uid) .partitionedBy(dt) ) try: writer.overwritePartitions() except Exception: # 表不存在时 overwritePartitions 会抛异常改用 create writer.create()