| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| #pragma once |
| |
| #include <cstdint> |
| #include <limits> |
| |
| #include "paimon/visibility.h" |
| |
| namespace paimon { |
| |
| /// Enumeration of supported data types in Paimon tables. |
| enum class FieldType { |
| BOOLEAN = 1, |
| TINYINT = 2, |
| SMALLINT = 3, |
| INT = 4, |
| BIGINT = 5, |
| FLOAT = 6, |
| DOUBLE = 7, |
| STRING = 8, |
| BINARY = 9, |
| /// timestamp type only supports precision values of 0, 3, 6, 9: |
| /// - 0: second precision |
| /// - 3: millisecond precision |
| /// - 6: microsecond precision |
| /// - 9: nanosecond precision |
| TIMESTAMP = 10, |
| DECIMAL = 11, |
| DATE = 12, |
| ARRAY = 13, |
| MAP = 14, |
| STRUCT = 15, |
| BLOB = 16, |
| UNKNOWN = 128, |
| }; |
| |
| /// Configuration options and constants for Paimon table operations. |
| /// |
| /// The Options struct contains static string constants that define configuration keys |
| /// used throughout the Paimon system. |
| struct PAIMON_EXPORT Options { |
| /// @name merge-on-read configurations |
| /// The 5 constants are the prefixes or suffixes for merge on read configuration. |
| /// The complete configuration keys can be: |
| /// - fields.$field_name.aggregate-function |
| /// - fields.$field_name.ignore-retract |
| /// - fields.$field_names.sequence-group ($field_names support one or more field_name, split |
| /// with FIELDS_SEPARATOR) |
| /// |
| /// examples: |
| /// - fields.f1.aggregate-function |
| /// - fields.f2.sequence-group |
| /// - fields.f3,f4.sequence-group |
| /// |
| /// @{ |
| |
| /// FIELDS_SEPARATOR is "," |
| static const char FIELDS_SEPARATOR[]; |
| /// FIELDS_PREFIX is "fields" |
| static const char FIELDS_PREFIX[]; |
| /// AGG_FUNCTION is "aggregate-function" |
| static const char AGG_FUNCTION[]; |
| /// DEFAULT_AGG_FUNCTION is "default-aggregate-function" |
| static const char DEFAULT_AGG_FUNCTION[]; |
| /// IGNORE_RETRACT is "ignore-retract" |
| static const char IGNORE_RETRACT[]; |
| /// "distinct" - Distinct option for aggregate functions like listagg. Default value is false. |
| /// Example: fields.f.distinct=true to deduplicate values during aggregation. |
| static const char DISTINCT[]; |
| /// "list-agg-delimiter" - Delimiter for listagg aggregate function. Default value is ",". |
| /// Example: fields.f.list-agg-delimiter="-" to concatenate values with "-". |
| static const char LIST_AGG_DELIMITER[]; |
| /// SEQUENCE_GROUP is "sequence-group" |
| static const char SEQUENCE_GROUP[]; |
| /// @} |
| |
| /// "bucket" - Bucket mode or bucket count for file store. Append tables support -1 |
| /// (unaware-bucket mode), primary-key tables support -2 (postpone-bucket mode), and both |
| /// table types support values greater than 0 (fixed-bucket mode). |
| static const char BUCKET[]; |
| |
| /// "bucket-key" - Specify the paimon distribution policy. Data is assigned to each bucket |
| /// according to the hash value of bucket-key. If you specify multiple fields, delimiter is ','. |
| /// If not specified, the primary key will be used, if there is no primary key, the full row |
| /// will be used. |
| static const char BUCKET_KEY[]; |
| |
| // TODO(yonghao.fyh): This option has not been used yet |
| /// "page-size" - Memory page size, default value 64 kb. |
| static const char PAGE_SIZE[]; |
| |
| /// "file.format" - Specify the message format of data files. |
| /// Default value is parquet. |
| static const char FILE_FORMAT[]; |
| |
| /// "file-system" - Specify the file system. |
| /// Default value is local. |
| static const char FILE_SYSTEM[]; |
| |
| /// "target-file-size" - Target size of a file. primary key table: the default value is 128 MB. |
| /// append table: the default value is 256 MB. |
| static const char TARGET_FILE_SIZE[]; |
| |
| /// "blob.target-file-size" - Target size of a blob file. Default is TARGET_FILE_SIZE. |
| static const char BLOB_TARGET_FILE_SIZE[]; |
| |
| /// "partition.default-name" - The default partition name in case the dynamic partition column |
| /// value is null/empty string. Default is "__DEFAULT_PARTITION__". |
| static const char PARTITION_DEFAULT_NAME[]; |
| |
| /// "file.compression" - The default file compression is zstd. For faster read and write, it is |
| /// recommended to use zstd. |
| static const char FILE_COMPRESSION[]; |
| |
| /// "file.compression.zstd-level" |
| /// Default file compression zstd level. For higher compression rates, it can be configured to |
| /// 9, but the read and write speed will significantly decrease. Default value is 1. |
| static const char FILE_COMPRESSION_ZSTD_LEVEL[]; |
| |
| /// "manifest.target-file-size" - Suggested file size of a manifest file. |
| /// Default value is 8MB. |
| static const char MANIFEST_TARGET_FILE_SIZE[]; |
| |
| /// "manifest.format" - Specify the message format of manifest files. |
| /// Default value is avro. |
| static const char MANIFEST_FORMAT[]; |
| |
| /// "manifest.compression" - File compression for manifest, default value is zstd. |
| static const char MANIFEST_COMPRESSION[]; |
| |
| /// "manifest.merge-min-count" - To avoid frequent manifest merges, this parameter specifies the |
| /// minimum number of ManifestFileMeta to merge, default value is 30. |
| static const char MANIFEST_MERGE_MIN_COUNT[]; |
| |
| /// "manifest.full-compaction-threshold-size" - The size threshold for triggering full |
| /// compaction of manifest, default value is 16MB. |
| static const char MANIFEST_FULL_COMPACTION_FILE_SIZE[]; |
| |
| /// "source.split.target-size" - Target size of a source split when scanning a bucket. Default |
| /// value is 128MB. |
| static const char SOURCE_SPLIT_TARGET_SIZE[]; |
| |
| /// "source.split.open-file-cost" - Open file cost of a source file. It is used to avoid reading |
| /// too many files with a source split, which can be very slow. Default value is 4MB. |
| static const char SOURCE_SPLIT_OPEN_FILE_COST[]; |
| |
| /// "scan.snapshot-id" - Optional snapshot id used in case of "from-snapshot" or |
| /// "from-snapshot-full" scan mode |
| static const char SCAN_SNAPSHOT_ID[]; |
| |
| /// "scan.mode" - Specify the scanning behavior of the source. Values can be: "default", |
| /// "latest-full", "latest", "from-snapshot", "from-snapshot-full". Default value is "default". |
| static const char SCAN_MODE[]; |
| |
| /// "read.batch-size" - Read batch size for any file format if it supports. |
| /// The default value is 1024. |
| static const char READ_BATCH_SIZE[]; |
| |
| /// "write.batch-size" - Write batch size for any file format if it supports. |
| /// The default value is 1024. |
| static const char WRITE_BATCH_SIZE[]; |
| |
| /// "write-buffer-size" - Amount of data to build up in memory before converting to a sorted |
| /// on-disk file. The default value is 256 mb |
| static const char WRITE_BUFFER_SIZE[]; |
| |
| /// "write-buffer-spillable" - Whether the write buffer can be spillable. Default value is true. |
| static const char WRITE_BUFFER_SPILLABLE[]; |
| |
| /// "write-buffer-spill.max-disk-size" - The max disk to use for write buffer spill. This only |
| /// works when the write buffer spill is enabled. Default value is unlimited. |
| static const char WRITE_BUFFER_SPILL_MAX_DISK_SIZE[]; |
| |
| /// "local-sort.max-num-file-handles" - The maximal fan-in for external merge sort. It limits |
| /// the number of file handles. If it is too small, may cause intermediate merging. But if it is |
| /// too large, it will cause too many files opened at the same time, consume memory and lead to |
| /// random reading. Default value is 128. |
| static const char LOCAL_SORT_MAX_NUM_FILE_HANDLES[]; |
| |
| /// "spill-compression" - Compression for spill. Default value is zstd. |
| static const char SPILL_COMPRESSION[]; |
| |
| /// "spill-compression.zstd-level" - Default spill compression zstd level. For higher |
| /// compression rates, it can be configured to 9, but the read and write speed will |
| /// significantly decrease. Default value is 1. |
| static const char SPILL_COMPRESSION_ZSTD_LEVEL[]; |
| |
| /// "snapshot.num-retained.min" - The minimum number of completed snapshots to retain. Should be |
| /// greater than or equal to 1. Default value is 10 |
| static const char SNAPSHOT_NUM_RETAINED_MIN[]; |
| |
| /// "snapshot.num-retained.max" - The maximum number of completed snapshots to retain. Should be |
| /// greater than or equal to the minimum number. Default value is int32 max value. |
| static const char SNAPSHOT_NUM_RETAINED_MAX[]; |
| |
| /// "snapshot.time-retained" - The maximum time of completed snapshots to retain. Default value |
| /// is 1 hour. |
| static const char SNAPSHOT_TIME_RETAINED[]; |
| |
| /// "snapshot.expire.limit" - The maximum number of snapshots allowed to expire at a time. |
| /// Default value is 50. |
| static const char SNAPSHOT_EXPIRE_LIMIT[]; |
| |
| /// "snapshot.clean-empty-directories" - Whether to try to clean empty directories when expiring |
| /// snapshots, if enabled, please note: hdfs: may print exceptions in NameNode. oss/s3: may |
| /// cause performance issue. Default value is false. |
| static const char SNAPSHOT_CLEAN_EMPTY_DIRECTORIES[]; |
| |
| /// "commit.force-compact" - Whether to force a compaction before commit. Default value is |
| /// "false". |
| static const char COMMIT_FORCE_COMPACT[]; |
| |
| /// "commit.timeout" - Timeout duration of retry when commit failed. No default value. |
| static const char COMMIT_TIMEOUT[]; |
| |
| /// "commit.max-retries" - Maximum number of retries when commit failed. Default value is 10. |
| static const char COMMIT_MAX_RETRIES[]; |
| |
| /// "compaction.max-size-amplification-percent" - The size amplification is defined as the |
| /// amount (in percentage) of additional storage needed to store a single byte of data in the |
| /// merge tree for changelog mode table. Default value is 200. |
| static const char COMPACTION_MAX_SIZE_AMPLIFICATION_PERCENT[]; |
| |
| /// "compaction.size-ratio" - Percentage flexibility while comparing sorted run size for |
| /// changelog mode table. If the candidate sorted run(s) size is 1% smaller than the next |
| /// sorted run's size, then include next sorted run into this candidate set. Default value is 1. |
| static const char COMPACTION_SIZE_RATIO[]; |
| |
| /// "num-sorted-run.compaction-trigger" - The sorted run number to trigger compaction. Includes |
| /// level0 files (one file one sorted run) and high-level runs (one level one sorted run). |
| /// Default value is 5. |
| static const char NUM_SORTED_RUNS_COMPACTION_TRIGGER[]; |
| |
| /// "num-sorted-run.stop-trigger" - The number of sorted runs that trigger the stopping of |
| /// writes, the default value is 'num-sorted-run.compaction-trigger' + 3. |
| static const char NUM_SORTED_RUNS_STOP_TRIGGER[]; |
| |
| /// "num-levels" - Total level number, for example, there are 3 levels, including 0,1,2 levels. |
| /// No default value. |
| static const char NUM_LEVELS[]; |
| |
| /// "lookup-wait" - When need to lookup, commit will wait for compaction by lookup. Default |
| /// value is "true". |
| static const char LOOKUP_WAIT[]; |
| |
| /// "lookup-compact" - Lookup compact mode used for lookup compaction. Default value is |
| /// LookupCompactMode::RADICAL. |
| static const char LOOKUP_COMPACT[]; |
| |
| /// "compaction.force-up-level-0" - If set to true, compaction strategy will always include all |
| /// level 0 files in candidates. Default value is false. |
| static const char COMPACTION_FORCE_UP_LEVEL_0[]; |
| |
| /// "lookup-compact.max-interval" - The max interval for a gentle mode lookup compaction to be |
| /// triggered. For every interval, a forced lookup compaction will be performed to flush L0 |
| /// files to higher level. This option is only valid when lookup-compact mode is gentle. No |
| /// default value. |
| static const char LOOKUP_COMPACT_MAX_INTERVAL[]; |
| |
| /// "sequence.field" - The field that generates the sequence number for primary key table, the |
| /// sequence number determines which data is the most recent. Value use "," as delimiter. |
| static const char SEQUENCE_FIELD[]; |
| |
| /// "sequence.field.sort-order" - Specify the order of sequence.field. Values can be: |
| /// "ascending", "descending". Default value is "ascending". |
| static const char SEQUENCE_FIELD_SORT_ORDER[]; |
| |
| /// "merge-engine" - Specify the merge engine for table with primary key. Values can be: |
| /// "deduplicate", "partial-update", "aggregation", "first-row". Default value is "deduplicate". |
| static const char MERGE_ENGINE[]; |
| |
| /// "sort-engine" - Specify the sort engine for table with primary key. Values can be: |
| /// "min-heap", "loser-tree". Default value is "loser-tree". |
| static const char SORT_ENGINE[]; |
| |
| /// "ignore-delete" - Whether to ignore delete records. Default value is "false". |
| static const char IGNORE_DELETE[]; |
| |
| /// "fields.default-aggregate-function" - Default aggregate function of all fields for |
| /// partial-update and aggregate merge function. |
| static const char FIELDS_DEFAULT_AGG_FUNC[]; |
| |
| /// "deletion-vectors.enabled" - Whether to enable deletion vectors mode. In this mode, index |
| /// files containing deletion vectors are generated when data is written, which marks the data |
| /// for deletion. During read operations, by applying these index files, merging can be avoided. |
| /// Default value is false. |
| static const char DELETION_VECTORS_ENABLED[]; |
| |
| /// "deletion-vector.index-file.target-size" - The target size of deletion vector index file. |
| /// Default value is 2MB. |
| static const char DELETION_VECTOR_INDEX_FILE_TARGET_SIZE[]; |
| |
| /// "deletion-vectors.bitmap64" - Enable 64 bit bitmap implementation. Note that only 64 bit |
| /// bitmap implementation is compatible with Iceberg. Default value is "false". |
| /// @note: bitmap64 dv is not supported. |
| static const char DELETION_VECTOR_BITMAP64[]; |
| |
| /// @note `CHANGELOG_PRODUCER` currently only support `none` |
| /// |
| /// "changelog-producer" - Whether to double write to a changelog file. This changelog file |
| /// keeps the details of data changes, it can be read directly during stream reads. This can be |
| /// applied to tables with primary keys. Values can be "none", "input", "lookup", |
| /// "full-compaction". Default value is "none". |
| static const char CHANGELOG_PRODUCER[]; |
| |
| /// "force-lookup" - Whether to force the use of lookup for compaction. Default value is |
| /// "false". |
| static const char FORCE_LOOKUP[]; |
| |
| /// "partial-update.remove-record-on-delete" - Whether to remove the whole row in partial-update |
| /// engine when records are received. Default value is "false". |
| static const char PARTIAL_UPDATE_REMOVE_RECORD_ON_DELETE[]; |
| |
| /// "partial-update.remove-record-on-sequence-group" - When records of the given sequence groups |
| /// are received, remove the whole row. |
| static const char PARTIAL_UPDATE_REMOVE_RECORD_ON_SEQUENCE_GROUP[]; |
| |
| /// "scan.fallback-branch" - When a batch job queries from a table, if a partition does not |
| /// exist in the current branch, the reader will try to get this partition from this fallback |
| /// branch. |
| static const char SCAN_FALLBACK_BRANCH[]; |
| |
| /// "branch" - Specify branch name. Default value is "main". |
| static const char BRANCH[]; |
| |
| /// "file-index.read.enabled" - Whether enabled read file index. Default value is "true". |
| static const char FILE_INDEX_READ_ENABLED[]; |
| |
| /// "data-file.external-paths" - The external paths where the data of this table will be |
| /// written, multiple elements separated by commas. |
| static const char DATA_FILE_EXTERNAL_PATHS[]; |
| /// "data-file.external-paths.strategy" - The strategy of selecting an external path when |
| /// writing data. Values can be: "none", "specific-fs", "round-robin". Default value is "none". |
| static const char DATA_FILE_EXTERNAL_PATHS_STRATEGY[]; |
| /// "data-file.prefix" - Specify the file name prefix of data files. Default value is "data-". |
| static const char DATA_FILE_PREFIX[]; |
| /// "index-file-in-data-file-dir" - Whether index file in data file directory. Default value is |
| /// "false". |
| static const char INDEX_FILE_IN_DATA_FILE_DIR[]; |
| /// "row-tracking.enabled" - Whether enable unique row id for append table. Default value is |
| /// "false". |
| static const char ROW_TRACKING_ENABLED[]; |
| /// "row-tracking.partition-group-on-commit" - When row-tracking is enabled, whether to group |
| /// new file metas by partition before commit, so that assigned row IDs are contiguous within |
| /// each partition. This is useful if you want to build global indices on this table. Default |
| /// value is "true". |
| static const char ROW_TRACKING_PARTITION_GROUP_ON_COMMIT[]; |
| /// "data-evolution.enabled" - Whether enable data evolution for row tracking table. Default |
| /// value is "false". |
| static const char DATA_EVOLUTION_ENABLED[]; |
| /// "partition.legacy-name" - The legacy partition name is using `ToString` for all types. If |
| /// false, using casting to string for all types. Default value is "true". |
| static const char PARTITION_GENERATE_LEGACY_NAME[]; |
| /// "blob-as-descriptor" - Read and write blob field using blob descriptor rather than blob |
| /// bytes. Default value is "false". |
| static const char BLOB_AS_DESCRIPTOR[]; |
| /// "blob-field" - Specifies column names that should be stored as blob type. This is used |
| /// when you want to treat a BYTES column as a BLOB. Fields listed in blob-descriptor-field or |
| /// blob-view-field are also treated as BLOB fields. Comma-separated field names. Multiple blob |
| /// fields are supported. No default value. |
| static const char BLOB_FIELD[]; |
| /// "blob-descriptor-field" - Comma-separated field names to treat as BLOB fields and store as |
| /// serialized BlobDescriptor bytes inline in data files. No default value. |
| static const char BLOB_DESCRIPTOR_FIELD[]; |
| /// "blob.stored-descriptor-fields" deprecated as a fallback for `BLOB_DESCRIPTOR_FIELD`. |
| static const char FALLBACK_BLOB_DESCRIPTOR_FIELD[]; |
| /// "blob-view-field" - Comma-separated field names to treat as BLOB fields and store as |
| /// serialized BlobViewStruct bytes inline in data files and resolve from upstream tables at |
| /// read time. No default value. |
| static const char BLOB_VIEW_FIELD[]; |
| /// "blob-external-storage-field" - Comma-separated BLOB field names (must be a subset of |
| /// blob-descriptor-field ) whose raw data will be written to external storage at write time. |
| /// The external storage path is configured via blob-external-storage-path. Orphan file cleanup |
| /// is not applied to that path. No default value. |
| static const char BLOB_EXTERNAL_STORAGE_FIELD[]; |
| /// "blob-external-storage-path" - The external storage path where raw BLOB data from fields |
| /// configured by 'blob-external-storage-field' is written at write time. Orphan file cleanup is |
| /// not applied to this path. No default value. |
| static const char BLOB_EXTERNAL_STORAGE_PATH[]; |
| /// "global-index.enabled" - Whether to enable global index for scan. Default value is "true". |
| static const char GLOBAL_INDEX_ENABLED[]; |
| /// "global-index.thread-num" - The maximum number of concurrent scanner for global index. No |
| /// default value. By default is the number of processors available to the machine. |
| static const char GLOBAL_INDEX_THREAD_NUM[]; |
| /// "global-index.external-path" - Global index root directory, if not set, the global index |
| /// files will be stored under the index directory. |
| static const char GLOBAL_INDEX_EXTERNAL_PATH[]; |
| /// "aggregation.remove-record-on-delete" - Whether to remove the whole row in aggregation |
| /// engine when delete records are received. Default value is "false". |
| static const char AGGREGATION_REMOVE_RECORD_ON_DELETE[]; |
| /// "table-read.sequence-number.enabled" - Whether to include the _SEQUENCE_NUMBER field when |
| /// reading the audit_log or binlog system tables. This is only valid for primary key tables. |
| /// Default value is "false". |
| static const char TABLE_READ_SEQUENCE_NUMBER_ENABLED[]; |
| /// "key-value.sequence_number.enabled" - Whether to include the _SEQUENCE_NUMBER field when |
| /// reading key-value data. This is an internal option used by AuditLogTable and BinlogTable |
| /// when table-read.sequence-number.enabled is set to true. Default value is "false". |
| static const char KEY_VALUE_SEQUENCE_NUMBER_ENABLED[]; |
| |
| /// "scan.timestamp-millis" - Optional timestamp used in case of "from-timestamp" scan mode. |
| /// For batch sources, produces the latest snapshot earlier than or equal to the timestamp. |
| /// For streaming sources, starts from the first snapshot at or after the timestamp. |
| /// "scan.timestamp" can be used as an alternative string input for the same mode. |
| static const char SCAN_TIMESTAMP_MILLIS[]; |
| |
| /// "scan.timestamp" - Optional timestamp string used in case of "from-timestamp" scan mode, |
| /// as an alternative to "scan.timestamp-millis". |
| /// It will be automatically converted to timestamp in unix milliseconds, using local time zone. |
| /// Supported formats: yyyy-MM-dd, yyyy-MM-dd HH:mm:ss, yyyy-MM-dd HH:mm:ss.SSS. |
| static const char SCAN_TIMESTAMP[]; |
| |
| /// "scan.tag-name" - Optional tag name used in case of "from-snapshot" scan mode. |
| static const char SCAN_TAG_NAME[]; |
| /// "write-only" - If set to "true", compactions and snapshot expiration will be skipped. This |
| /// option is used along with dedicated compact jobs. Default value is "false". |
| static const char WRITE_ONLY[]; |
| /// "compaction.min.file-num" - For file set [f_0,...,f_N], the minimum file number to trigger a |
| /// compaction for append-only table. Default value is 5. |
| static const char COMPACTION_MIN_FILE_NUM[]; |
| /// "compaction.force-rewrite-all-files" - Whether to force pick all files for a full |
| /// compaction. Usually seen in a compaction task to external paths. Default value is "false". |
| static const char COMPACTION_FORCE_REWRITE_ALL_FILES[]; |
| /// "compaction.optimization-interval" - Implying how often to perform an optimization |
| /// compaction, this configuration is used to ensure the query timeliness of the read-optimized |
| /// system table. No default value. |
| static const char COMPACTION_OPTIMIZATION_INTERVAL[]; |
| /// "compaction.total-size-threshold" - When total size is smaller than this threshold, force a |
| /// full compaction. No default value. |
| static const char COMPACTION_TOTAL_SIZE_THRESHOLD[]; |
| /// "compaction.incremental-size-threshold" - When incremental size is bigger than this |
| /// threshold, force a full compaction. No default value. |
| static const char COMPACTION_INCREMENTAL_SIZE_THRESHOLD[]; |
| /// "compaction.offpeak.start.hour" - The start of off-peak hours, expressed as an integer |
| /// between 0 and 23, inclusive. Set to -1 to disable off-peak. Default is -1. |
| static const char COMPACT_OFFPEAK_START_HOUR[]; |
| /// "compaction.offpeak.end.hour" - The end of off-peak hours, expressed as an integer between 0 |
| /// and 23, exclusive. Set to -1 to disable off-peak. Default is -1. |
| static const char COMPACT_OFFPEAK_END_HOUR[]; |
| /// "compaction.offpeak-ratio" - Allows you to set a different (by default, more aggressive) |
| /// percentage ratio for determining whether larger sorted run's size are included in |
| /// compactions during off-peak hours. Works in the same way as compaction.size-ratio. Only |
| /// applies if offpeak.start.hour and offpeak.end.hour are also enabled. |
| /// For instance, if your cluster experiences low pressure between 2 AM and 6 PM , you can |
| /// configure `compaction.offpeak.start.hour=2` and `compaction.offpeak.end.hour=18` to define |
| /// this period as off-peak hours. During these hours, you can increase the off-peak compaction |
| /// ratio (e.g. `compaction.offpeak-ratio=20`) to enable more aggressive data compaction. |
| /// Default is 0. |
| static const char COMPACTION_OFFPEAK_RATIO[]; |
| /// "lookup.cache.bloom.filter.enabled" - Whether to enable the bloom filter for lookup cache. |
| /// Default value is true. |
| static const char LOOKUP_CACHE_BLOOM_FILTER_ENABLED[]; |
| /// "lookup.cache.bloom.filter.fpp" - Define the default false positive probability for lookup |
| /// cache bloom filters. Default value is 0.05. |
| static const char LOOKUP_CACHE_BLOOM_FILTER_FPP[]; |
| /// "lookup.remote-file.enabled" - Whether to enable the remote file for lookup. |
| /// Default value is false. |
| static const char LOOKUP_REMOTE_FILE_ENABLED[]; |
| /// "lookup.remote-file.level-threshold" - Level threshold of lookup to generate remote lookup |
| /// files. Level files below this threshold will not generate remote lookup files. |
| /// Default value is INT32_MIN. |
| static const char LOOKUP_REMOTE_LEVEL_THRESHOLD[]; |
| /// "lookup.cache-spill-compression" - Spill compression for lookup cache, currently zstd, none, |
| /// lz4 are supported. Default value is zstd. |
| /// Noted that java paimon also supports lzo which paimon-cpp does not support for now. |
| static const char LOOKUP_CACHE_SPILL_COMPRESSION[]; |
| /// "cache-page-size" - Memory page size for caching. Default value is 64 kb. |
| static const char CACHE_PAGE_SIZE[]; |
| /// "file.format.per.level" - Define different file format for different level, you can add the |
| /// conf like this: 'file.format.per.level' = '0:avro,3:parquet', if the file format for level |
| /// is not provided, the default format which set by FILE_FORMAT will be used. |
| static const char FILE_FORMAT_PER_LEVEL[]; |
| /// "file.compression.per.level" - Define different compression policies for different level, |
| /// you can add the conf like this: 'file.compression.per.level' = '0:lz4,1:zstd'. |
| /// If a level is not configured, the default compression set by FILE_COMPRESSION will be used. |
| static const char FILE_COMPRESSION_PER_LEVEL[]; |
| /// "lookup.cache-max-memory-size" - Max memory size for lookup cache. Default value is 256 mb. |
| static const char LOOKUP_CACHE_MAX_MEMORY_SIZE[]; |
| /// "lookup.cache.high-priority-pool-ratio" - The fraction of cache memory that is reserved for |
| /// high-priority data like index, filter. Default value is 0.25. |
| static const char LOOKUP_CACHE_HIGH_PRIO_POOL_RATIO[]; |
| /// "bucket-function.type" - The bucket function type for paimon bucket. |
| /// Values can be: "default", "mod", "hive". Default value is "default". |
| static const char BUCKET_FUNCTION_TYPE[]; |
| /// "lookup.cache-file-retention" - The cached files retention time for lookup. |
| /// After the file expires, if there is a need for access, it will be re-read from the DFS |
| /// to build an index on the local disk. Default value is 1 hour. |
| static const char LOOKUP_CACHE_FILE_RETENTION[]; |
| /// "lookup.cache-max-disk-size" - Max disk size for lookup cache, you can use this option |
| /// to limit the use of local disks. Default value is unlimited (INT64_MAX). |
| static const char LOOKUP_CACHE_MAX_DISK_SIZE[]; |
| }; |
| |
| static constexpr int64_t BATCH_WRITE_COMMIT_IDENTIFIER = std::numeric_limits<int64_t>::max(); |
| |
| } // namespace paimon |