目前官方文档不是很全,好多support key 是没有包含的,以下是从官方代码支持的
可以方便进行dremio 的管理(比如一些官方暂时没有说明的key。。。)
代码路径: sabot/kernel/src/main/java/com/dremio/exec/planner/physical/PlannerSettings.java
@Options
public class PlannerSettings implements Context{
static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(PlannerSettings.class);
private int numEndPoints = 0;
private boolean useDefaultCosting = false; // True: use default Calcite costing, False: use Dremio costing
private boolean forceSingleMode;
private long minimumSampleSize = 0;
// should distribution traits be pulled off during planning
private boolean pullDistributionTrait = true;
public static final int MAX_RECURSION_STACK_DEPTH = 100;
public static final int MAX_BROADCAST_THRESHOLD = Integer.MAX_VALUE;
public static final int DEFAULT_IDENTIFIER_MAX_LENGTH = 1024;
public static final double DEFAULT_FILTER_MIN_SELECTIVITY_ESTIMATE_FACTOR_WITH_STATISTICS = 0.005d;
public static final double DEFAULT_FILTER_MIN_SELECTIVITY_ESTIMATE_FACTOR = 0.5d;
public static final double DEFAULT_FILTER_MAX_SELECTIVITY_ESTIMATE_FACTOR = 1.0d;
// default off heap memory for planning (256M)
private static final long DEFAULT_MAX_OFF_HEAP_ALLOCATION_IN_BYTES = 256 * 1024 * 1024;
private static final long DEFAULT_BROADCAST_THRESHOLD = 10000000;
private static final long DEFAULT_CELL_COUNT_THRESHOLD = 10 * DEFAULT_BROADCAST_THRESHOLD; // 10 times DEFAULT_BROADCAST_THRESHOLD
public static final LongValidator PLANNER_MEMORY_RESERVATION = new RangeLongValidator("planner.reservation_bytes",
0L, Long.MAX_VALUE, 0L);
public static final LongValidator PLANNER_MEMORY_LIMIT = new RangeLongValidator("planner.memory_limit",
0L, Long.MAX_VALUE, DEFAULT_MAX_OFF_HEAP_ALLOCATION_IN_BYTES);
public static final LongValidator MAX_METADATA_CALL_COUNT =
new LongValidator("planner.max_metadata_call_count", 10_000_000L);
public static final DoubleValidator MUX_USE_THRESHOLD = new RangeDoubleValidator("planner.mux.use_threshold", 0, Double.MAX_VALUE, 1200.0d);
public static final BooleanValidator FLATTEN_FILTER = new BooleanValidator("planner.enable_filter_flatten_pushdown", false /** disabled until DX-7987 is resolved **/);
public static final BooleanValidator CONSTANT_FOLDING = new BooleanValidator("planner.enable_constant_folding", true);
public static final BooleanValidator EXCHANGE = new BooleanValidator("planner.disable_exchanges", false);
public static final BooleanValidator HASHAGG = new BooleanValidator("planner.enable_hashagg", true);
public static final BooleanValidator STREAMAGG = new BooleanValidator("planner.enable_streamagg", true);
public static final BooleanValidator HASHJOIN = new BooleanValidator("planner.enable_hashjoin", true);
public static final BooleanValidator MERGEJOIN = new BooleanValidator("planner.enable_mergejoin", false);
public static final BooleanValidator NESTEDLOOPJOIN = new BooleanValidator("planner.enable_nestedloopjoin", true);
public static final BooleanValidator MULTIPHASE = new BooleanValidator("planner.enable_multiphase_agg", true);
public static final BooleanValidator BROADCAST = new BooleanValidator("planner.enable_broadcast_join", true);
public static final LongValidator BROADCAST_MIN_THRESHOLD = new PositiveLongValidator("planner.broadcast_min_threshold", MAX_BROADCAST_THRESHOLD, 500000);
public static final LongValidator BROADCAST_THRESHOLD = new PositiveLongValidator("planner.broadcast_threshold", MAX_BROADCAST_THRESHOLD, DEFAULT_BROADCAST_THRESHOLD);
public static final LongValidator BROADCAST_CELL_COUNT_THRESHOLD = new PositiveLongValidator("planner.broadcast_cellcount_threshold", MAX_BROADCAST_THRESHOLD, DEFAULT_CELL_COUNT_THRESHOLD);
public static final DoubleValidator BROADCAST_FACTOR = new RangeDoubleValidator("planner.broadcast_factor", 0, Double.MAX_VALUE, 2.0d);
public static final DoubleValidator NESTEDLOOPJOIN_FACTOR = new RangeDoubleValidator("planner.nestedloopjoin_factor", 0, Double.MAX_VALUE, 100.0d);
public static final LongValidator NESTEDLOOPJOIN_MAX_CONDITION_NODES = new PositiveLongValidator("planner.nestedloopjoin_max_condition_nodes", Long.MAX_VALUE, 120);
public static final BooleanValidator NLJOIN_FOR_SCALAR = new BooleanValidator("planner.enable_nljoin_for_scalar_only", false);
public static final DoubleValidator JOIN_ROW_COUNT_ESTIMATE_FACTOR = new RangeDoubleValidator("planner.join.row_count_estimate_factor", 0, Double.MAX_VALUE, 1.0d);
public static final BooleanValidator MUX_EXCHANGE = new BooleanValidator("planner.enable_mux_exchange", true);
public static final BooleanValidator DEMUX_EXCHANGE = new BooleanValidator("planner.enable_demux_exchange", false);
public static final LongValidator PARTITION_SENDER_THREADS_FACTOR = new LongValidator("planner.partitioner_sender_threads_factor", 2);
public static final LongValidator PARTITION_SENDER_MAX_THREADS = new LongValidator("planner.partitioner_sender_max_threads", 8);
public static final LongValidator PARTITION_SENDER_SET_THREADS = new LongValidator("planner.partitioner_sender_set_threads", -1);
public static final BooleanValidator PRODUCER_CONSUMER = new BooleanValidator("planner.add_producer_consumer", false);
public static final LongValidator PRODUCER_CONSUMER_QUEUE_SIZE = new LongValidator("planner.producer_consumer_queue_size", 10);
public static final BooleanValidator HASH_SINGLE_KEY = new BooleanValidator("planner.enable_hash_single_key", false);
public static final BooleanValidator HASH_JOIN_SWAP = new BooleanValidator("planner.enable_hashjoin_swap", true);
public static final RangeDoubleValidator HASH_JOIN_SWAP_MARGIN_FACTOR = new RangeDoubleValidator("planner.join.hash_join_swap_margin_factor", 0, 100, 10d);
public static final LongValidator STREAM_AGG_MAX_GROUP = new PositiveLongValidator("planner.streamagg.max_group_key", Long.MAX_VALUE, 64);
public static final BooleanValidator STREAM_AGG_WITH_GROUPS = new BooleanValidator("planner.streamagg.allow_grouping", false);
public static final String ENABLE_DECIMAL_DATA_TYPE_KEY = "planner.enable_decimal_data_type";
public static final LongValidator HEP_PLANNER_MATCH_LIMIT = new PositiveLongValidator("planner.hep_match_limit", Integer.MAX_VALUE, Integer.MAX_VALUE);
public static final BooleanValidator TRANSITIVE_FILTER_JOIN_PUSHDOWN = new BooleanValidator("planner.filter.transitive_pushdown", true);
public static final BooleanValidator TRANSITIVE_FILTER_NOT_NULL_EXPR_PUSHDOWN = new BooleanValidator("planner.filter.transitive_pushdown_not_null_expr", false); // Until DX-26452 is fixes
public static final BooleanValidator ENABLE_RUNTIME_FILTER = new BooleanValidator("planner.filter.runtime_filter", true);
public static final BooleanValidator ENABLE_TRANSPOSE_PROJECT_FILTER_LOGICAL = new BooleanValidator("planner.experimental.tpf_logical", false);
public static final BooleanValidator ENABLE_PROJECT_CLEANUP_LOGICAL = new BooleanValidator("planner.experimental.pclean_logical", false);
public static final BooleanValidator ENABLE_CROSS_JOIN = new BooleanValidator("planner.enable_cross_join", true);
public static final BooleanValidator ENABLE_DECIMAL_DATA_TYPE = new BooleanValidator
(ENABLE_DECIMAL_DATA_TYPE_KEY, true);
public static final BooleanValidator HEP_OPT = new BooleanValidator("planner.enable_hep_opt", true);
public static final BooleanValidator ENABLE_PARTITION_PRUNING = new BooleanValidator("planner.enable_partition_pruning", true);
public static final String UNIONALL_DISTRIBUTE_KEY = "planner.enable_unionall_distribute";
public static final BooleanValidator UNIONALL_DISTRIBUTE = new BooleanValidator(UNIONALL_DISTRIBUTE_KEY, true);
public static final LongValidator PLANNING_MAX_MILLIS = new LongValidator("planner.timeout_per_phase_ms", 60_000);
public static final BooleanValidator RELATIONAL_PLANNING = new BooleanValidator("planner.enable_relational_planning", true);
public static final BooleanValidator FULL_NESTED_SCHEMA_SUPPORT = new BooleanValidator("planner.enable_full_nested_schema", true);
public static final BooleanValidator COMPLEX_TYPE_FILTER_PUSHDOWN = new BooleanValidator("planner.complex_type_filter_pushdown", true);
public static final BooleanValidator ENABLE_LEAF_LIMITS = new BooleanValidator("planner.leaf_limit_enable", false);
public static final RangeLongValidator LEAF_LIMIT_SIZE = new RangeLongValidator("planner.leaf_limit_size", 1, Long.MAX_VALUE, 10000);
public static final RangeLongValidator LEAF_LIMIT_MAX_WIDTH = new RangeLongValidator("planner.leaf_limit_width", 1, Long.MAX_VALUE, 10);
public static final BooleanValidator ENABLE_OUTPUT_LIMITS = new BooleanValidator("planner.output_limit_enable", false);
public static final RangeLongValidator OUTPUT_LIMIT_SIZE = new RangeLongValidator("planner.output_limit_size", 1, Long.MAX_VALUE, 1_000_000);
public static final DoubleValidator COLUMN_UNIQUENESS_ESTIMATION_FACTOR = new RangeDoubleValidator("planner.column_uniqueness_estimation_factor", 0d, 1d, 0.1d);
// number of records (per minor fragment) is truncated to at-least MIN_RECORDS_PER_FRAGMENT
// if num of records for the fragment is greater than this.
public static final Long MIN_RECORDS_PER_FRAGMENT = 500L;
public static final BooleanValidator VDS_AUTO_FIX = new BooleanValidator("validator.enable_vds_autofix", true);
public static final BooleanValidator NLJ_PUSHDOWN = new BooleanValidator("planner.nlj.expression_pushdown", true);
public static final BooleanValidator REDUCE_ALGEBRAIC_EXPRESSIONS = new BooleanValidator("planner.reduce_algebraic_expressions", false);
public static final BooleanValidator FILTER_EXTRACT_CONJUNCTIONS = new BooleanValidator("planner.filter.extract_conjunctions", false);
public static final BooleanValidator ENABlE_PROJCT_NLJ_MERGE = new BooleanValidator("planner.nlj.enable_project_merge", true);
public static final String ENABLE_DECIMAL_V2_KEY = "planner" +
".enable_decimal_v2";
public static final String ENABLE_VECTORIZED_PARQUET_DECIMAL_KEY = "planner" +
".enable_vectorized_parquet_decimal";
public static final BooleanValidator ENABLE_DECIMAL_V2 = new AdminBooleanValidator
(ENABLE_DECIMAL_V2_KEY, true);
public static final BooleanValidator ENABLE_VECTORIZED_PARQUET_DECIMAL = new BooleanValidator
(ENABLE_VECTORIZED_PARQUET_DECIMAL_KEY, true);
public static final BooleanValidator ENABLE_PARQUET_IN_EXPRESSION_PUSH_DOWN =
new BooleanValidator("planner.parquet.in_expression_push_down", true);
public static final BooleanValidator ENABLE_PARQUET_MULTI_COLUMN_FILTER_PUSH_DOWN =
new BooleanValidator("planner.parquet.multi_column_filter_push_down", true);
public static final LongValidator MAX_NODES_PER_PLAN = new LongValidator("planner.max_nodes_per_plan", 25_000);
public static final BooleanValidator ENABLE_ICEBERG_EXECUTION = new BooleanValidator("dremio.execution.v2", false);
public static final BooleanValidator ENABLE_DELTALAKE = new BooleanValidator("dremio.deltalake.enabled", true);
public static final LongValidator ICEBERG_MANIFEST_SCAN_RECORDS_PER_THREAD = new LongValidator("planner.iceberg.manifestscan.records_per_thread", 1000);
public static final BooleanValidator UNLIMITED_SPLITS_SUPPORT = new BooleanValidator("dremio.execution.support_unlimited_splits", false);
public static final BooleanValidator ENABLE_AGGRESSIVE_MEMORY_CALCULATION =
new BooleanValidator("planner.memory.aggressive", false);
public static final TypeValidators.LongValidator ADJUST_RESERVED_WHEN_AGGRESSIVE =
new TypeValidators.LongValidator("planner.memory.adjust_aggressive_by_mb", 1024);
/**
* Policy regarding storing query results
*/
public enum StoreQueryResultsPolicy {
/**
* Do not save query result
*/
NO,
/**
* Save query results to the path designated by {@code QUERY_RESULTS_STORE_TABLE} option
*/
DIRECT_PATH,
/**
* Save query results to the path designated by {@code QUERY_RESULTS_STORE_TABLE} option
* appended with attempt id
*/
PATH_AND_ATTEMPT_ID
}
public static final OptionValidator STORE_QUERY_RESULTS = new QueryLevelOptionValidation(
new EnumValidator<>("planner.store_query_results", StoreQueryResultsPolicy.class, StoreQueryResultsPolicy.NO));
public static final OptionValidator QUERY_RESULTS_STORE_TABLE = new QueryLevelOptionValidation(new StringValidator("planner.query_results_store_path", "null"));
// Enable filter reduce expressions rule for tableau's 1=0 queries.
public static final BooleanValidator ENABLE_REDUCE_PROJECT = new BooleanValidator("planner.enable_reduce_project", true);
public static final BooleanValidator ENABLE_REDUCE_FILTER = new BooleanValidator("planner.enable_reduce_filter", true);
public static final BooleanValidator ENABLE_REDUCE_CALC = new BooleanValidator("planner.enable_reduce_calc", true);
// Filter reduce expression rules used in conjunction with transitive filter
public static final BooleanValidator ENABLE_TRANSITIVE_REDUCE_PROJECT = new BooleanValidator("planner.enable_transitive_reduce_project", false);
public static final BooleanValidator ENABLE_TRANSITIVE_REDUCE_FILTER = new BooleanValidator("planner.enable_transitive_reduce_filter", false);
public static final BooleanValidator ENABLE_TRANSITIVE_REDUCE_CALC = new BooleanValidator("planner.enable_transitive_reduce_calc", false);
public static final BooleanValidator ENABLE_TRIVIAL_SINGULAR = new BooleanValidator("planner.enable_trivial_singular", true);
public static final BooleanValidator ENABLE_SORT_ROUND_ROBIN = new BooleanValidator("planner.enable_sort_round_robin", true);
public static final BooleanValidator ENABLE_UNIONALL_ROUND_ROBIN = new BooleanValidator("planner.enable_union_all_round_robin", true);
public static final RangeLongValidator IDENTIFIER_MAX_LENGTH =
new RangeLongValidator("planner.identifier_max_length", 128 /* A minimum length is needed because option names are identifiers themselves */,
Integer.MAX_VALUE, DEFAULT_IDENTIFIER_MAX_LENGTH);
public static final BooleanValidator ENABLE_GLOBAL_DICTIONARY = new BooleanValidator("planner.enable_global_dictionary", true);
public static final DoubleValidator FLATTEN_EXPANSION_AMOUNT = new TypeValidators.RangeDoubleValidator("planner.flatten.expansion_size", 0, Double.MAX_VALUE, 10.0d);
public static final LongValidator RING_COUNT = new TypeValidators.PowerOfTwoLongValidator("planner.ring_count", 4096, 64);
public static final BooleanValidator WRITER_TEMP_FILE = new BooleanValidator("planner.writer_temp_file", false);
/**
* Controls whether to use the cached prepared statement handles more than once. Setting it to false will remove the
* handle when it is used the first time before it expires. Setting it to true will reuse the handle as many times as
* it can before it expires.
*/
public static final BooleanValidator REUSE_PREPARE_HANDLES = new BooleanValidator("planner.reuse_prepare_statement_handles", false);
public static final BooleanValidator VERBOSE_PROFILE = new BooleanValidator("planner.verbose_profile", false);
public static final BooleanValidator USE_STATISTICS = new BooleanValidator("planner.use_statistics", false);
public static final BooleanValidator USE_ROW_COUNT_STATISTICS = new BooleanValidator("planner.use_rowcount_statistics", false);
public static final BooleanValidator VERBOSE_RULE_MATCH_LISTENER = new BooleanValidator("planner.verbose_rule_match_listener", false);
public static final BooleanValidator INCLUDE_DATASET_PROFILE = new BooleanValidator("planner.include_dataset_profile", true);
public static final BooleanValidator ENABLE_JOIN_OPTIMIZATION = new BooleanValidator("planner.enable_join_optimization", true);
public static final BooleanValidator ENABLE_EXPERIMENTAL_BUSHY_JOIN_OPTIMIZER = new BooleanValidator("planner.experimental.enable_bushy_join_optimizer", false);
public static final DoubleValidator FILTER_MIN_SELECTIVITY_ESTIMATE_FACTOR =
new RangeDoubleValidator("planner.filter.min_selectivity_estimate_factor", 0.0, 1.0, DEFAULT_FILTER_MIN_SELECTIVITY_ESTIMATE_FACTOR);
public static final DoubleValidator FILTER_MIN_SELECTIVITY_ESTIMATE_FACTOR_WITH_STATISTICS =
new RangeDoubleValidator("planner.filter.min_selectivity_estimate_factor_with_statistics", 0.0, 1.0, DEFAULT_FILTER_MIN_SELECTIVITY_ESTIMATE_FACTOR_WITH_STATISTICS);
public static final DoubleValidator FILTER_MAX_SELECTIVITY_ESTIMATE_FACTOR =
new RangeDoubleValidator("planner.filter.max_selectivity_estimate_factor", 0.0, 1.0, DEFAULT_FILTER_MAX_SELECTIVITY_ESTIMATE_FACTOR);
public static final BooleanValidator REMOVE_ROW_ADJUSTMENT = new BooleanValidator("planner.remove_rowcount_adjustment", true);
public static final PositiveLongValidator CASE_EXPRESSIONS_THRESHOLD = new PositiveLongValidator("planner.case_expressions_threshold", 400, 150);
public static final BooleanValidator ENABLE_SCAN_MIN_COST = new BooleanValidator("planner.cost.minimum.enable", true);
public static final DoubleValidator DEFAULT_SCAN_MIN_COST = new DoubleValidator("planner.default.min_cost_per_split", 0);
public static final DoubleValidator ADLS_SCAN_MIN_COST = new DoubleValidator("planner.adl.min_cost_per_split", 1E6);
public static final DoubleValidator AZURE_STORAGE_SCAN_MIN_COST = new DoubleValidator("planner.azure_storage.min_cost_per_split", 1E6);
public static final DoubleValidator S3_SCAN_MIN_COST = new DoubleValidator("planner.s3.min_cost_per_split", 1E6);
public static final DoubleValidator ACCELERATION_SCAN_MIN_COST = new DoubleValidator("planner.acceleration.min_cost_per_split", 0);
public static final DoubleValidator HOME_SCAN_MIN_COST = new DoubleValidator("planner.home.min_cost_per_split", 0);
public static final DoubleValidator INTERNAL_SCAN_MIN_COST = new DoubleValidator("planner.internal.min_cost_per_split", 0);
public static final DoubleValidator ELASTIC_SCAN_MIN_COST = new DoubleValidator("planner.elastic.min_cost_per_split", 0);
public static final DoubleValidator MONGO_SCAN_MIN_COST = new DoubleValidator("planner.mongo.min_cost_per_split", 0);
public static final DoubleValidator HBASE_SCAN_MIN_COST = new DoubleValidator("planner.hbase.min_cost_per_split", 0);
public static final DoubleValidator HIVE_SCAN_MIN_COST = new DoubleValidator("planner.hive.min_cost_per_split", 0);
public static final DoubleValidator PDFS_SCAN_MIN_COST = new DoubleValidator("planner.pdfs.min_cost_per_split", 0);
public static final DoubleValidator HDFS_SCAN_MIN_COST = new DoubleValidator("planner.hdfs.min_cost_per_split", 0);
public static final DoubleValidator MAPRFS_SCAN_MIN_COST = new DoubleValidator("planner.maprfs.min_cost_per_split", 0);
public static final DoubleValidator NAS_SCAN_MIN_COST = new DoubleValidator("planner.nas.min_cost_per_split", 0);
private static final Set<String> SOURCES_WITH_MIN_COST = ImmutableSet.of(
"adl",
"s3",
"acceleration",
"home",
"internal",
"elastic",
"mongo",
"hbase",
"hive",
"pdfs",
"hdfs",
"maprfs",
"nas",
"azure_storage"
);
/**
* Option to enable additional push downs (filter, project, etc.) to JDBC sources. Enabling the option may cause
* the SQL query being push down to be written differently from what is submitted by the user. For example, the join
* order may change, filter pushed past join, etc.
*/
public static final BooleanValidator JDBC_PUSH_DOWN_PLUS =
new BooleanValidator("planner.jdbc.experimental.enable_additional_pushdowns", false);
/**
* Options to reject queries which will attempt to process more than this many splits: per dataset, and per query
*/
public static final PositiveLongValidator QUERY_MAX_SPLIT_LIMIT = new PositiveLongValidator("planner.query_max_split_limit", Integer.MAX_VALUE, 300_000);
public static final PositiveLongValidator DATASET_MAX_SPLIT_LIMIT = new PositiveLongValidator("planner.dataset_max_split_limit", Integer.MAX_VALUE, 300_000);
/**
* Options to enable/disable plan cache and set plan cache policy
*/
public static final BooleanValidator QUERY_PLAN_CACHE_ENABLED = new BooleanValidator("planner.query_plan_cache_enabled", false);
}
@Options
public interface ReflectionOptions {
// how often should the reflection manager wakeup automatically without any external trigger
PositiveLongValidator REFLECTION_MANAGER_REFRESH_DELAY_MILLIS = new PositiveLongValidator("reflection.manager.refresh.delay_millis", Long.MAX_VALUE, TimeUnit.SECONDS.toMillis(10));
// how long deleted reflection goals/materializations are kept in the store/on disk before they are effectively deleted
PositiveLongValidator REFLECTION_DELETION_GRACE_PERIOD = new PositiveLongValidator("reflection.deletion.grace_seconds", Long.MAX_VALUE, TimeUnit.HOURS.toSeconds(4));
// how many entries should be deleted every time the reflection manager wakes up
PositiveLongValidator REFLECTION_DELETION_NUM_ENTRIES = new PositiveLongValidator("reflection.deletion.num_entries", Long.MAX_VALUE, 5);
// how often should the materialization zombie check be done
PositiveLongValidator MATERIALIZATION_ORPHAN_REFRESH = new PositiveLongValidator("materialization.orphan.refresh_seconds", Long.MAX_VALUE, TimeUnit.HOURS.toSeconds(4));
BooleanValidator MATERIALIZATION_CACHE_ENABLED = new BooleanValidator("dremio.materialization.cache.enabled", true);
// how often should the materialization cache be refreshed
PositiveLongValidator MATERIALIZATION_CACHE_REFRESH_DELAY_MILLIS = new PositiveLongValidator("reflection.materialization.cache.refresh.delay_millis", Long.MAX_VALUE, TimeUnit.SECONDS.toMillis(30));
// allows users to set sub-hour refresh and grace periods
BooleanValidator ENABLE_SUBHOUR_POLICIES = new BooleanValidator("accelerator.enable.subhour.policies", false);
// control how many voted datasets are promoted every 24 hours
PositiveLongValidator MAX_AUTOMATIC_REFLECTIONS = new PositiveLongValidator("reflection.auto.max", Integer.MAX_VALUE, 10);
// should the voting service create aggregation reflections
BooleanValidator ENABLE_AUTOMATIC_AGG_REFLECTIONS = new BooleanValidator("reflection.auto.agg.enable", false);
// should the voting service create raw reflections
BooleanValidator ENABLE_AUTOMATIC_RAW_REFLECTIONS = new BooleanValidator("reflection.auto.raw.enable", false);
// set to true to prevent external events from waking up the reflection manager
BooleanValidator REFLECTION_PERIODIC_WAKEUP_ONLY = new BooleanValidator("reflection.manager.wakeup.periodic_only", false);
BooleanValidator REFLECTION_ENABLE_SUBSTITUTION = new BooleanValidator("reflection.enable.substitutions", true);
// if a reflection has no known dependencies how long should we wait before we attempt to refresh again
PositiveLongValidator NO_DEPENDENCY_REFRESH_PERIOD_SECONDS = new PositiveLongValidator("reflection.no_dependency.refresh_period_seconds", Long.MAX_VALUE, TimeUnit.MINUTES.toSeconds(30));
// should compaction be enabled
BooleanValidator ENABLE_COMPACTION = new BooleanValidator("reflection.compaction.enabled", false);
// at least how many files there should be to trigger compaction
PositiveLongValidator COMPACTION_TRIGGER_NUMBER_FILES = new PositiveLongValidator("reflection.compaction.trigger.num_files", Long.MAX_VALUE, 1);
// Compaction will be triggered if the median file size is less than or equal to this parameter
PositiveLongValidator COMPACTION_TRIGGER_FILE_SIZE = new PositiveLongValidator("reflection.compaction.trigger.file_size_mb", Long.MAX_VALUE / (1024 * 1024), 16);
// Enable caching of reflection whose dist storage is in cloud ( S3, AzureDataLake, AzureFileSystem)
BooleanValidator CLOUD_CACHING_ENABLED = new BooleanValidator("reflection.cloud.cache.enabled", true);
// If disabled, only vds schema and expanded sql definition will be considered when deciding to do an incremental refresh
BooleanValidator STRICT_INCREMENTAL_REFRESH = new BooleanValidator("reflection.manager.strict_incremental_refresh.enabled", false);
// If enabled, uses Iceberg format for reflection datasets
BooleanValidator REFLECTION_USE_ICEBERG_DATASET = new BooleanValidator("reflection.manager.use_iceberg_dataset.enabled", false);
StringValidator NESSIE_REFLECTIONS_NAMESPACE = new StringValidator("reflection.manager.nessie_iceberg_namespace", "dremio.reflections");
}
对于配置的修改建议先了解下,仔细评估下,不见得都是好的,不然可能会引起一些意外的问题
https://docs.dremio.com/advanced-administration/support-settings/