{"record":{"id":"eea78f1cc97a366b","repo":"apache/iceberg","slug":"skipping-bloom-filter-config-for-missing-field","errorCode":null,"errorMessage":"Skipping bloom filter config for missing field: {}","messagePattern":"Skipping bloom filter config for missing field: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"parquet/src/main/java/org/apache/iceberg/parquet/Parquet.java","lineNumber":340,"sourceCode":"    WriteBuilder createContextFunc(Function<Map<String, String>, Context> newCreateContextFunc) {\n      this.createContextFunc = newCreateContextFunc;\n      return this;\n    }\n\n    private void setBloomFilterConfig(\n        Context context,\n        Map<String, String> colNameToParquetPathMap,\n        BiConsumer<String, Boolean> withBloomFilterEnabled,\n        BiConsumer<String, Double> withBloomFilterFPP,\n        BiConsumer<String, Long> withBloomFilterNDV) {\n\n      context\n          .columnBloomFilterEnabled()\n          .forEach(\n              (colPath, isEnabled) -> {\n                String parquetColumnPath = colNameToParquetPathMap.get(colPath);\n                if (parquetColumnPath == null) {\n                  LOG.warn(\"Skipping bloom filter config for missing field: {}\", colPath);\n                  return;\n                }\n\n                withBloomFilterEnabled.accept(parquetColumnPath, Boolean.valueOf(isEnabled));\n                String fpp = context.columnBloomFilterFpp().get(colPath);\n                if (fpp != null) {\n                  withBloomFilterFPP.accept(parquetColumnPath, Double.parseDouble(fpp));\n                }\n                String ndv = context.columnBloomFilterNdv().get(colPath);\n                if (ndv != null) {\n                  withBloomFilterNDV.accept(parquetColumnPath, Long.parseLong(ndv));\n                }\n              });\n    }\n\n    private void setColumnStatsConfig(\n        Context context,\n        Map<String, String> colNameToParquetPathMap,","sourceCodeStart":322,"sourceCodeEnd":358,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/parquet/src/main/java/org/apache/iceberg/parquet/Parquet.java#L322-L358","documentation":"When building a Parquet writer, a bloom filter enablement was requested for a column path that does not exist in the actual Parquet schema being written. The config for that column is skipped with a warning instead of failing, and the writer proceeds without bloom filters for the missing field.","triggerScenarios":"Setting table/config property write.parquet.bloom-filter.enabled.column:<col>=true for a column absent from the written schema (e.g. after schema evolution, dropped column, or case-sensitivity mismatch).","commonSituations":"Bloom filter configs set on a table whose write schema was narrowed; partition-column or identity-mapped columns not present in the data file schema; typo in the column path.","solutions":["Remove or correct the bloom filter config for the non-existent column path","Update the config after schema evolution so it references current columns","Verify column path casing/segmentation matches the Iceberg schema (nested paths use dot notation)"],"exampleFix":"// before (table property)\n'write.parquet.bloom-filter.enabled.column':'id'  // column 'id' dropped from schema\n// after\nALTER TABLE t UNSET TBLPROPERTIES ('write.parquet.bloom-filter.enabled.column');","handlingStrategy":"validation","validationCode":"write.parquet.bloom-filter.enabled.column.<col> settings should reference columns verified against currentSchema().columns() before configuring the writer","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Clean up per-column Parquet properties after schema evolution","Validate property column paths against the table schema in CI","Use exact Iceberg column paths (dot-separated for nested fields)"],"tags":["parquet","bloom-filter","configuration"],"backgroundTag":"invalid-config-value","analyzedSha":"86d9c8fc543e7c56c9f624eb725f76c9baff9570","analyzedAt":"2026-09-12T00:46:39.097Z","contentChangedAt":"2026-09-12T00:46:39.097Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}