{"record":{"id":"853d9f368bb8c0f7","repo":"apache/iceberg","slug":"skipping-dictionary-encoding-config-for-missing-fi","errorCode":null,"errorMessage":"Skipping dictionary encoding config for missing field: {}","messagePattern":"Skipping dictionary encoding config for missing field: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"parquet/src/main/java/org/apache/iceberg/parquet/Parquet.java","lineNumber":385,"sourceCode":"                  LOG.warn(\"Skipping column statistics config for missing field: {}\", colPath);\n                  return;\n                }\n                withColumnStatsEnabled.accept(parquetColumnPath, Boolean.valueOf(isEnabled));\n              });\n    }\n\n    private void setDictionaryEncodingConfig(\n        Context context,\n        Map<String, String> colNameToParquetPathMap,\n        BiConsumer<String, Boolean> withDictionaryEncoding) {\n\n      context\n          .columnDictionaryEncodingEnabled()\n          .forEach(\n              (colPath, isEnabled) -> {\n                String parquetColumnPath = colNameToParquetPathMap.get(colPath);\n                if (parquetColumnPath == null) {\n                  LOG.warn(\"Skipping dictionary encoding config for missing field: {}\", colPath);\n                  return;\n                }\n                withDictionaryEncoding.accept(parquetColumnPath, Boolean.valueOf(isEnabled));\n              });\n    }\n\n    @Override\n    public <D> FileAppender<D> build() throws IOException {\n      Preconditions.checkNotNull(schema, \"Schema is required\");\n      Preconditions.checkNotNull(name, \"Table name is required and cannot be null\");\n\n      // add the Iceberg schema to keyValueMetadata\n      meta(\"iceberg.schema\", SchemaParser.toJson(schema));\n\n      // Map Iceberg properties to pass down to the Parquet writer\n      Context context = createContextFunc.apply(config);\n\n      int rowGroupSize = context.rowGroupSize();","sourceCodeStart":367,"sourceCodeEnd":403,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/parquet/src/main/java/org/apache/iceberg/parquet/Parquet.java#L367-L403","documentation":"When building a Parquet writer, dictionary-encoding was configured for a column path that does not exist in the actual Parquet schema. The config is skipped with a warning; the writer proceeds with dictionary defaults for the missing column.","triggerScenarios":"Setting write.parquet.dictionary-enabled.column:<col>=false (or true) for a column absent from the write schema — dropped/renamed column, projection mismatch, or typo.","commonSituations":"Dictionary configs left over from schema evolution; per-column tuning on identity columns that are not materialized in data files; case-sensitivity differences.","solutions":["Remove or correct the dictionary-enabled property for the missing column","Update per-column properties after schema changes","Confirm the exact Iceberg column path (nested fields use dot-separated paths)"],"exampleFix":"// before\n'write.parquet.dictionary-enabled.column':'status'='false'  // 'status' not in schema\n// after\nALTER TABLE t UNSET TBLPROPERTIES ('write.parquet.dictionary-enabled.column');","handlingStrategy":"validation","validationCode":"table.properties().stringPropertyNames().stream().filter(k -> k.startsWith(\"write.parquet.dictionary-enabled.column\")).forEach(k -> { String col = k.substring(k.lastIndexOf('.')+1); if (table.schema().findField(col) == null) { /* unset stale property */ } });","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Audit dictionary-enabled column properties after renames/drops","Apply dictionary tuning per current schema, not historical names","Test writer config against a staging table before prod writes"],"tags":["parquet","dictionary-encoding","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"}