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() 
            等价 SQL:CREATE TABLE ... AS SELECT ...(CTAS)
            表不存在:建表 + 写数据
            表已存在:抛异常
        
        .createOrReplace()
            等价 SQL:CREATE OR REPLACE TABLE ... AS SELECT ...
            表不存在:建表 + 写数据
            表已存在:先 DROP 再 CREATE,相当于完整重建表并写入新数据
            注意:会丢失原表所有数据及表结构定义,适合每次全量刷新场景
        .replace()
            等价 SQL:REPLACE TABLE ... AS SELECT ...
            表不存在:抛异常
            表已存在:DROP + CREATE 重建写入
        .append()
            等价 SQL:INSERT INTO ...
            向已有表追加数据(INSERT INTO 语义)
            表不存在会报错,不会自动建表
            不支持 .using() / .tableProperty()(表已存在,无需配置)
        .overwritePartitions()
            等价 SQL:INSERT OVERWRITE ...(动态分区模式)
            覆盖 DataFrame 中涉及到的分区,其他分区数据保留
            相当于 spark.sql.sources.partitionOverwriteMode=dynamic 的 INSERT OVERWRITE

接口对比

案例

动态覆盖的分区表 且表可能不存在

python 复制代码
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()
相关推荐
科研前沿2 小时前
镜像视界 CameraGraph™+多智能体:构建自感知自决策的全域空间认知网络技术方案
大数据·运维·人工智能·数码相机·计算机视觉
发哥来了3 小时前
AI视频生成模型选型指南:五大核心维度对比评测
大数据·人工智能·机器学习·ai·aigc
发哥来了3 小时前
AI驱动生产线的实际落地:一个东莞厂商的技术选型实录
大数据·人工智能·机器学习·ai·aigc
历程里程碑4 小时前
4 Git远程协作:从零开始,玩转仓库关联与代码同步(带实操代码讲解)
大数据·c++·git·elasticsearch·搜索引擎·gitee·github
AI周红伟5 小时前
周红伟:运营商一季度净利集体下滑 Token运营提速
大数据·网络·人工智能
无忧智库5 小时前
研发管理的下一个十年:当多Agent协同遇上知识图谱,传统项目管理体系正在被颠覆(WORD)
大数据·人工智能·知识图谱
汽车仪器仪表相关领域6 小时前
Kvaser Memorator Professional 5xHS CB:五通道CAN FD裸板记录仪,赋能多总线系统集成测试的旗舰级核心装备
大数据·网络·人工智能·单元测试·汽车·集成测试
gQ85v10Db7 小时前
Redis分布式锁进阶第十七篇:微服务分布式锁全局治理 + 跨团队统一规范落地 + 全链路稳定性提升方案
redis·分布式·微服务
头条快讯8 小时前
中国非遗美食文化的跨国传承:鲁味居在北美市场的标准化实践与布局
大数据·人工智能
我是发哥哈9 小时前
深度评测:五款主流AI培训平台的课程交付能力对比
大数据·人工智能·学习·机器学习·ai·chatgpt