云数据迁移 CDM-Hudi目的端的作业执行Spark SQL写入Hudi失败怎么办?:解决方案

时间:2024-11-12 11:45:41

解决方案

  • DataArts Studio 或者Hue或者spark-beeline上执行drop table将表从metastore中删除,然后作业配置 “不存在时创建”重跑作业。或者删除后自己执行建表语句重建一个Hudi表。

    对于MOR表来说,删表需要把ro与rt表也同时删除。否则会出现schema残留的问题。

  • 删除空值后重跑作业。
  • 具体办法:
    • 在作业管理界面选择更多-失败重试,尝试重新执行Spark SQL。
    • 通过DataArts Studio执行Spark SQL,设置执行参数或者调整SQL。

      调整Spark切片大小:

      set spark.sql.files.maxPartitionBytes=xxM;默认值为128M,可适当调整为64M或者32M。

      如果数据切分不均匀,可以修改SQL配置DISTRIBUTE BY rand(),增加一个shuffle过程,打散数据(需要占用较多资源,资源不多时慎用)。

      insert into xx select * from xxx DISTRIBUTE BY rand();

    • 使用DataArts Studio API方式提交Spark SQL,调大executor内存。
  • 排查是否有其他连接在同时写hudi表,如果有,将连接停止,然后 CDM 作业失败重试。
support.huaweicloud.com/cdm_faq/cdm_01_1148.html