Index Configuration
Parameter |
Description |
Default Value |
---|---|---|
hoodie.index.class |
Specifies the full path of user-defined index class. It must be a subclass of HoodieIndex and takes precedence over the hoodie.index.type configuration if specified. |
"" |
hoodie.index.type |
Specifies the type of index to be used. The Bloom filter is used by default. The possible option is [BLOOM | HBASE | GLOBAL_BLOOM | SIMPLE | GLOBAL_SIMPLE]. The Bloom filter eliminates the dependency on an external system and is stored in the footer of a Parquet data file. |
BLOOM |
hoodie.index.bloom.num_entries |
Specifies the number of entries to be stored in the Bloom filter. If the maxParquetFileSize is 128 MB and averageRecordSize is 1,024 bytes, a total of 130 KB records exist in a file. The default value (60000) is about half of this approximate value.
CAUTION:
If the value is too low, a large number of false positives will occur, and index lookup will have to scan more files than it needs. If the value is too high, the size every data file will be increased linearly (about 4 KB for every 50000 entries). |
60000 |
hoodie.index.bloom.fpp |
Specifies the allowed error rate based on the number of entries. This is used to calculate how many bits should be assigned for the Bloom filter and the number of hash functions. Generally, it is set to a small value (0.000000001 by default). You need to balance the disk space to reduce the false positive rate. |
0.000000001 |
hoodie.bloom.index.parallelism |
Specifies the parallelism for index lookup, which involves Spark Shuffle. By default, this is automatically computed based on input workload characteristics. |
0 |
hoodie.bloom.index.prune.by.ranges |
If this parameter is set to true, information is ranged from files to speed up index lookups. It is particularly useful if the key has a monotonously increasing prefix, such as timestamp. |
true |
hoodie.bloom.index.use.caching |
If this parameter is set to true, the input RDD is cached to speed up index lookups by reducing I/O for computing parallelism or affected partitions. |
true |
hoodie.bloom.index.use.treebased.filter |
If this parameter is set to true, the file pruning optimization based on interval tree is enabled. This mode speeds up file pruning based on key ranges compared with the brute-force mode. |
true |
hoodie.bloom.index.bucketized.checking |
If this parameter is set to true, the bucketized Bloom filtering is enabled. This reduces skew in the sort-based Bloom index lookup. |
true |
hoodie.bloom.index.keys.per.bucket |
This parameter is applicable only when bloomIndexBucketizedChecking is enabled and the index type is BLOOM. This parameter controls the "bucket" size which tracks the number of record-key checks made against a single file and is the unit of work allocated to each partition performing the Bloom filter lookup. A higher value would amortize the fixed cost of reading the Bloom filter to memory. |
10000000 |
hoodie.bloom.index.update.partition.path |
This parameter is applicable only when the index type is GLOBAL_BLOOM. If this parameter is set to true, an update including the partition path of a record that already exists will result in the insertion of the incoming record into the new partition and the deletion of the original record in the old partition. If this parameter is set to false, the original record will only be updated in the old partition. |
false |
hoodie.index.hbase.zkquorum |
This parameter is applicable only when the index type is HBASE. HBase ZooKeeper quorum URL to be connected. |
Mandatory |
hoodie.index.hbase.zkport |
This parameter is applicable only when the index type is HBASE. HBase ZooKeeper quorum port to be connected. |
Mandatory |
hoodie.index.hbase.zknode.path |
This parameter is applicable only when the index type is HBASE. It is the root znode that will contain all the znodes created and used by HBase. |
Mandatory |
hoodie.index.hbase.table |
This parameter is applicable only when the index type is HBASE. HBase table name to be used as an index. Hudi stores the row_key and [partition_path, fileID, commitTime] mapping in the table. |
Mandatory |
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.