You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dataproc 2.1添加Hudi可选组件触发枚举标签未知ValueError

问题描述

使用Dataproc 2.1,在JSON配置中设置如下software_config:

"software_config": {
    "properties": {},
    "optional_components": ["JUPYTER","ZEPPELIN","Hudi"]
}

创建集群时触发错误:

[2023-12-14, 04:08:59 IST] {taskinstance.py:1851} ERROR - Task failed with exception
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/airflow/providers/google/cloud/operators/dataproc.py", line 609, in execute
    operation = self._create_cluster(hook)
  File "/usr/local/lib/python3.9/site-packages/airflow/providers/google/cloud/operators/dataproc.py", line 535, in _create_cluster
    return hook.create_cluster(
  File "/usr/local/lib/python3.9/site-packages/airflow/providers/google/common/hooks/base_google.py", line 468, in inner_wrapper
    return func(self, *args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/airflow/providers/google/cloud/hooks/dataproc.py", line 332, in create_cluster
    result = client.create_cluster(
  File "/usr/local/lib/python3.9/site-packages/google/cloud/dataproc_v1/services/cluster_controller/client.py", line 534, in create_cluster
    request = clusters.CreateClusterRequest(request)
  File "/usr/local/lib/python3.9/site-packages/proto/message.py", line 516, in __init__
    pb_value = marshal.to_proto(pb_type, value)
  File "/usr/local/lib/python3.9/site-packages/proto/marshal/marshal.py", line 211, in to_proto
    pb_value = rule.to_proto(value)
  File "/usr/local/lib/python3.9/site-packages/proto/marshal/rules/message.py", line 36, in to_proto
    return self._descriptor(**value)
ValueError: unknown enum label "Hudi"

改为"HUDI"后仍触发同类错误:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/airflow/providers/google/cloud/operators/dataproc.py", line 609, in execute
    operation = self._create_cluster(hook)
  File "/usr/local/lib/python3.9/site-packages/airflow/providers/google/cloud/operators/dataproc.py", line 535, in _create_cluster
    return hook.create_cluster(
  File "/usr/local/lib/python3.9/site-packages/airflow/providers/google/common/hooks/base_google.py", line 468, in inner_wrapper
    return func(self, *args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/airflow/providers/google/cloud/hooks/dataproc.py", line 332, in create_cluster
    result = client.create_cluster(
  File "/usr/local/lib/python3.9/site-packages/google/cloud/dataproc_v1/services/cluster_controller/client.py", line 534, in create_cluster
    request = clusters.CreateClusterRequest(request)
  File "/usr/local/lib/python3.9/site-packages/proto/message.py", line 516, in __init__
    pb_value = marshal.to_proto(pb_type, value)
  File "/usr/local/lib/python3.9/site-packages/proto/marshal/marshal.py", line 211, in to_proto
    pb_value = rule.to_proto(value)
  File "/usr/local/lib/python3.9/site-packages/proto/marshal/rules/message.py", line 36, in to_proto
    return self._descriptor(**value)
ValueError: unknown enum label "HUDI"
错误原因

Dataproc 2.1本身支持Hudi,但你使用的Airflow依赖的google-cloud-dataproc客户端库版本过旧,其枚举定义中尚未加入HUDI选项,导致客户端无法识别该标签并报错。

解决方案

方案1:升级客户端库版本

升级Airflow的Google Cloud相关依赖包,确保google-cloud-dataproc和apache-airflow-providers-google版本支持HUDI枚举:

pip install --upgrade google-cloud-dataproc apache-airflow-providers-google

升级完成后,使用"HUDI"作为可选组件标签即可正常创建集群。

方案2:使用初始化动作安装Hudi(无需升级库)

若无法升级客户端库,可通过Dataproc初始化动作手动安装Hudi,移除optional_components中的Hudi配置,改用initialization_actions指定安装脚本:

"config": {
    "software_config": {
        "properties": {},
        "optional_components": ["JUPYTER","ZEPPELIN"]
    },
    "initialization_actions": [
        {
            "uri": "gs://dataproc-initialization-actions/hudi/hudi.sh",
            "execution_timeout": "300s"
        }
    ]
}

内容的提问来源于stack exchange,提问作者user19930511

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 23:12:50