apache/seatunnel · error · RuntimeException

There is no bucket property in conf which load from [hadoop_

Error message

There is no bucket property in conf which load from [hadoop_conf_path,hadoop_conf].

What it means

AbstractStorage.fillBucket reads the 'bucket' property from the Hadoop configuration files loaded via hadoop_conf_path/hadoop_conf and injects it into the SeaTunnel config. If the merged Hadoop Configuration has no 'bucket' key (or it is blank), it throws this RuntimeException because bucket-based storage addressing cannot proceed without it.

Source

Thrown at seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/storage/AbstractStorage.java:55

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.Map;
import java.util.Optional;

@Slf4j
public abstract class AbstractStorage implements Storage {
    private static final Option BUCKET_OPTION = Options.key("bucket").stringType().noDefaultValue();
    private static final List<String> HADOOP_CONF_FILES =
            ImmutableList.of("core-site.xml", "hdfs-site.xml", "hive-site.xml");

    protected Config fillBucket(ReadonlyConfig readonlyConfig, Configuration configuration) {
        Config config = readonlyConfig.toConfig();
        String bucketValue = configuration.get(BUCKET_OPTION.key());
        if (StringUtils.isBlank(bucketValue)) {
            throw new RuntimeException(
                    "There is no bucket property in conf which load from [hadoop_conf_path,hadoop_conf].");
        }
        config = config.withValue(BUCKET_OPTION.key(), ConfigValueFactory.fromAnyRef(bucketValue));
        return config;
    }

    /**
     * Loading Hadoop configuration by hadoop conf path or props set by hive.hadoop.conf
     *
     * @return
     */
    protected Configuration loadHiveBaseHadoopConfig(ReadonlyConfig readonlyConfig) {
        try {
            Configuration configuration = new Configuration();
            // Try to load from hadoop_conf_path(The Bucket configuration is typically in
            // core-site.xml)
            Optional<String> hadoopConfPath =
                    readonlyConfig.getOptional(HiveBaseOptions.HADOOP_CONF_PATH);

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Add the 'bucket' property (e.g. <property><name>bucket</name><value>your-bucket</value></property>) to one of the XML files in hadoop_conf_path.
  2. Add 'bucket' to the inline hadoop_conf map in the connector config.
  3. Verify the resolved hadoop_conf_path directory actually contains core-site.xml/hdfs-site.xml/hive-site.xml and that SeaTunnel workers can read them.
  4. If the target is plain HDFS and no bucket is needed, use a storage type/config path that does not require bucket-based storage.

Example fix

// before (core-site.xml missing bucket)
<configuration/>
// after
<configuration>
  <property><name>bucket</name><value>oss://my-bucket</value></property>
</configuration>
Defensive patterns

Strategy: validation

Validate before calling

org.apache.hadoop.conf.Configuration conf = loadHadoopConf(hadoopConfPath, hadoopConf);
if (conf.get("bucket") == null || conf.get("bucket").trim().isEmpty()) {
    throw new IllegalArgumentException("hadoop conf must define 'bucket' before storage setup");
}

Prevention

When it happens

Trigger: Calling the storage setup path (e.g. creating an HDFS/OSS storage for a Hive table) when the supplied core-site.xml/hdfs-site.xml/hive-site.xml files or hadoop_conf map do not contain a non-blank 'bucket' property.

Common situations: Users point hadoop_conf_path at a directory missing the relevant XML, or copy configs from a non-object-storage cluster where 'bucket' is never set; also happens when hadoop_conf inline map omits the key.

Related errors


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/d1dce331255fad6e. Report an issue: GitHub.