|
| 1 | +<!-- |
| 2 | + ~ Licensed to the Apache Software Foundation (ASF) under one |
| 3 | + ~ or more contributor license agreements. See the NOTICE file |
| 4 | + ~ distributed with this work for additional information |
| 5 | + ~ regarding copyright ownership. The ASF licenses this file |
| 6 | + ~ to you under the Apache License, Version 2.0 (the |
| 7 | + ~ "License"); you may not use this file except in compliance |
| 8 | + ~ with the License. You may obtain a copy of the License at |
| 9 | + ~ |
| 10 | + ~ http://www.apache.org/licenses/LICENSE-2.0 |
| 11 | + ~ |
| 12 | + ~ Unless required by applicable law or agreed to in writing, |
| 13 | + ~ software distributed under the License is distributed on an |
| 14 | + ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| 15 | + ~ KIND, either express or implied. See the License for the |
| 16 | + ~ specific language governing permissions and limitations |
| 17 | + ~ under the License. |
| 18 | + --> |
| 19 | + |
| 20 | + |
| 21 | + |
| 22 | +## Class: ParquetOutputFormat |
| 23 | + |
| 24 | +**Property:** `parquet.crypto.factory.class` |
| 25 | +**Description:** Class implementing EncryptionPropertiesFactory. |
| 26 | +**Default value:** None. If not set, the file won't be encrypted by a crypto factory. |
| 27 | + |
| 28 | + |
| 29 | +## Class: HadoopReadOptions |
| 30 | + |
| 31 | +**Property:** `parquet.crypto.factory.class` |
| 32 | +**Description:** Class implementing DecryptionPropertiesFactory. |
| 33 | +**Default value:** None. If not set, the file won't be decrypted by a crypto factory. |
| 34 | + |
| 35 | + |
| 36 | +## Class: PropertiesDrivenCryptoFactory |
| 37 | + |
| 38 | +**Property:** `parquet.encryption.column.keys` |
| 39 | +**Description:** List of columns to encrypt, with master key IDs (see HIVE-21848).Format: “<masterKeyID>:<colName>,<colName>;<masterKeyID>:<colName>...” |
| 40 | +**Default value:** None. If neither `column.keys` nor `footer.key` are set, the file won't be encrypted by the PropertiesDrivenCryptoFactory. If one of the two properties is set, an exception will be thrown. |
| 41 | + |
| 42 | +--- |
| 43 | + |
| 44 | +**Property:** `parquet.encryption.footer.key` |
| 45 | +**Description:** Master key ID for footer encryption/signing. |
| 46 | +**Default value:** None. If neither `column.keys` nor `footer.key` are set, the file won't be encrypted by the PropertiesDrivenCryptoFactory. If one of the two properties is set, an exception will be thrown. |
| 47 | + |
| 48 | +--- |
| 49 | + |
| 50 | +**Property:** `parquet.encryption.algorithm` |
| 51 | +**Description:** Parquet encryption algorithm. Can be `AES_GCM_V1` or `AES_GCM_CTR_V1`. |
| 52 | +**Default value:** `AES_GCM_V1` |
| 53 | + |
| 54 | +--- |
| 55 | + |
| 56 | +**Property:** `parquet.encryption.plaintext.footer` |
| 57 | +**Description:** Write files in plaintext footer mode, that makes many footer fields visible (e.g. schema) but allows legacy readers to access unencrypted columns. The plaintext footer is signed with the footer key. |
| 58 | +If `false`, write files in encrypted footer mode, that fully encrypts the footer, and signs it with the footer key. |
| 59 | +**Default value:** `false` |
| 60 | + |
| 61 | +--- |
| 62 | + |
| 63 | +**Property:** `parquet.encryption.kms.client.class` |
| 64 | +**Description:** Class implementing the KmsClient interface. "KMS" stands for “key management service”. The Client will interact with a KMS Server to wrap/unrwap encryption keys. |
| 65 | +**Default value:** None |
| 66 | + |
| 67 | +--- |
| 68 | + |
| 69 | +**Property:** `parquet.encryption.kms.instance.id` |
| 70 | +**Description:** ID of the KMS instance that will be used for encryption (if multiple KMS instances are available). |
| 71 | +**Default value:** `DEFAULT` |
| 72 | + |
| 73 | +--- |
| 74 | + |
| 75 | +**Property:** `parquet.encryption.kms.instance.url` |
| 76 | +**Description:** URL of the KMS instance. |
| 77 | +**Default value:** `DEFAULT` |
| 78 | + |
| 79 | +--- |
| 80 | + |
| 81 | +**Property:** `parquet.encryption.key.access.token` |
| 82 | +**Description:** Authorization token that will be passed to KMS. |
| 83 | +**Default value:** None |
| 84 | + |
| 85 | +--- |
| 86 | + |
| 87 | +**Property:** `parquet.encryption.double.wrapping` |
| 88 | +**Description:** Use double wrapping - where data encryption keys (DEKs) are encrypted with key encryption keys (KEKs), which in turn are encrypted with master keys. |
| 89 | +If `false`, DEKs are directly encrypted with master keys, KEKs are not used. |
| 90 | +**Default value:** `true` |
| 91 | + |
| 92 | +--- |
| 93 | + |
| 94 | +**Property:** `parquet.encryption.cache.lifetime.seconds` |
| 95 | +**Description:** Lifetime of cached entities (key encryption keys, local wrapping keys, KMS client objects). |
| 96 | +**Default value:** `600` (10 minutes) |
| 97 | + |
| 98 | +--- |
| 99 | + |
| 100 | +**Property:** `parquet.encryption.wrap.locally` |
| 101 | +**Description:** Wrap keys locally - master keys are fetched from the KMS server and used to encrypt other keys (DEKs or KEKs). |
| 102 | +If `false` - key wrapping will be performed by a KMS server. |
| 103 | +**Default value:** `false` |
| 104 | + |
| 105 | +--- |
| 106 | + |
| 107 | +**Property:** `parquet.encryption.key.material.store.internally` |
| 108 | +**Description:** Store key material inside Parquet file footers; this mode doesn’t produce additional files. |
| 109 | +If `false`, key material is stored in separate new files, created in the same folder - this mode enables key rotation for immutable Parquet files. |
| 110 | +**Default value:** `true` |
| 111 | + |
| 112 | +--- |
| 113 | + |
| 114 | +**Property:** `parquet.encryption.data.key.length.bits` |
| 115 | +**Description:** Length of data encryption keys (DEKs), randomly generated by parquet key management tools. Can be 128, 192 or 256 bits. |
| 116 | +**Default value:** `128` |
| 117 | + |
| 118 | +--- |
| 119 | + |
0 commit comments