{"record":{"id":"d1dce331255fad6e","repo":"apache/seatunnel","slug":"there-is-no-bucket-property-in-conf-which-load-fro","errorCode":null,"errorMessage":"There is no bucket property in conf which load from [hadoop_conf_path,hadoop_conf].","messagePattern":"There is no bucket property in conf which load from \\[hadoop_conf_path,hadoop_conf\\]\\.","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/storage/AbstractStorage.java","lineNumber":55,"sourceCode":"import java.io.File;\nimport java.io.IOException;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Optional;\n\n@Slf4j\npublic abstract class AbstractStorage implements Storage {\n    private static final Option BUCKET_OPTION = Options.key(\"bucket\").stringType().noDefaultValue();\n    private static final List<String> HADOOP_CONF_FILES =\n            ImmutableList.of(\"core-site.xml\", \"hdfs-site.xml\", \"hive-site.xml\");\n\n    protected Config fillBucket(ReadonlyConfig readonlyConfig, Configuration configuration) {\n        Config config = readonlyConfig.toConfig();\n        String bucketValue = configuration.get(BUCKET_OPTION.key());\n        if (StringUtils.isBlank(bucketValue)) {\n            throw new RuntimeException(\n                    \"There is no bucket property in conf which load from [hadoop_conf_path,hadoop_conf].\");\n        }\n        config = config.withValue(BUCKET_OPTION.key(), ConfigValueFactory.fromAnyRef(bucketValue));\n        return config;\n    }\n\n    /**\n     * Loading Hadoop configuration by hadoop conf path or props set by hive.hadoop.conf\n     *\n     * @return\n     */\n    protected Configuration loadHiveBaseHadoopConfig(ReadonlyConfig readonlyConfig) {\n        try {\n            Configuration configuration = new Configuration();\n            // Try to load from hadoop_conf_path(The Bucket configuration is typically in\n            // core-site.xml)\n            Optional<String> hadoopConfPath =\n                    readonlyConfig.getOptional(HiveBaseOptions.HADOOP_CONF_PATH);","sourceCodeStart":37,"sourceCodeEnd":73,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/storage/AbstractStorage.java#L37-L73","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["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.","Add 'bucket' to the inline hadoop_conf map in the connector config.","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.","If the target is plain HDFS and no bucket is needed, use a storage type/config path that does not require bucket-based storage."],"exampleFix":"// before (core-site.xml missing bucket)\n<configuration/>\n// after\n<configuration>\n  <property><name>bucket</name><value>oss://my-bucket</value></property>\n</configuration>","handlingStrategy":"validation","validationCode":"org.apache.hadoop.conf.Configuration conf = loadHadoopConf(hadoopConfPath, hadoopConf);\nif (conf.get(\"bucket\") == null || conf.get(\"bucket\").trim().isEmpty()) {\n    throw new IllegalArgumentException(\"hadoop conf must define 'bucket' before storage setup\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep a canonical core-site.xml/hdfs-site.xml template that always includes 'bucket' for object-storage targets","Distribute hadoop_conf_path files to every SeaTunnel node and verify with a startup pre-check","Add the 'bucket' key to the inline hadoop_conf map as a belt-and-braces fallback"],"tags":["hadoop","hive","config","missing-property"],"backgroundTag":"missing-config-key","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}