Перейти к основному содержимому

Конфигурации Cloudera Impala

Конфигурирование таблиц

При материализации модели как table, вы можете включить несколько дополнительных конфигураций, которые специфичны для плагина dbt-impala, в дополнение к стандартным конфигурациям моделей.

ОпцияОписаниеОбязательно?Пример
partition_byразбиение по столбцу; как правило, для каждого партициона создаётся отдельный каталогNopartition_by=['name']
sort_byсортировка по столбцуNosort_by=['age']
row_formatформат, который будет использоваться при хранении отдельных строкNorow_format='delimited'
stored_asбазовый формат хранения таблицыNostored_as='PARQUET'
locationместо хранения, как правило путь в HDFSNoLOCATION='/user/etl/destination'
commentкомментарий к таблицеNocomment='this is the cleanest model'
serde_propertiesсвойства SerDe (сериализации/десериализации) таблицыNoserde_properties="('quoteChar'=''', 'escapeChar'='\')"
tbl_propertiesпроизвольные метаданные, которые могут быть сохранены с таблицей в виде пар ключ/значениеNotbl_properties="('dbt_test'='1')"
is_cachedtrue или false — указывает, кэшируется ли таблицаNois_cached=false (default)
cache_poolимя пула кэша, используемого если is_cached установлено в trueNo
replication_factorкоэффициент репликации кэша, используемый если is_cached установлено в trueNo
externalявляется ли таблица внешней — true / falseNoexternal=true
table_typeуказывает тип таблицы — iceberg / kuduNotable_type="iceberg"
Loading table...

Для специфичных для Cloudera опций вышеуказанных параметров смотрите документацию CREATE TABLE (https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/impala_create_table.html)

Инкрементальные модели

Поддерживаемые режимы для инкрементальной модели:

  • append (по умолчанию): Вставка новых записей без обновления или перезаписи существующих данных.
  • insert_overwrite: Для новых записей вставка данных. При использовании вместе с разделом partition обновление данных для измененной записи и вставка данных для новых записей.

Неподдерживаемые режимы:

  • unique_key Этот вариант не поддерживается для инкрементальных моделей в dbt-impala
  • merge: Слияние не поддерживается базовым хранилищем, и, следовательно, не поддерживается dbt-impala

Пример: Использование опции конфигурации partition_by

impala_partition_by.sql
{{
config(
materialized='table',
unique_key='id',
partition_by=['city'],
)
}}

with source_data as (
select 1 as id, "Name 1" as name, "City 1" as city,
union all
select 2 as id, "Name 2" as name, "City 2" as city,
union all
select 3 as id, "Name 3" as name, "City 2" as city,
union all
select 4 as id, "Name 4" as name, "City 1" as city,
)

select * from source_data

В приведенном выше примере создается пример таблицы с использованием partition_by и других опций конфигурации. Одно из важных замечаний при использовании опции partition_by заключается в том, что в запросе select всегда должен быть указан столбец, используемый в опции partition_by, последним, как это видно для столбца city в приведенном выше запросе. Если раздел partition_by не совпадает с последним столбцом в операторе select, Impala выдаст ошибку при попытке создать модель.

Нашли ошибку?

0
Loading