Формат таблицы LAYOUT для разделов кустов в BigQuery - PullRequest
1 голос
/ 08 апреля 2020

У меня много qsns внутри этой ситуации. Итак, вот что:

Кто-нибудь когда-нибудь записывал вывод Кафки в корзину Google Cloud Storage (GCS), так что данные в этой корзине разбиты с использованием «макета разметки кустов по умолчанию»? Внешняя таблица должна быть «запрашиваемой» в документации Google BigQuery, которая здесь есть, но она хотела посмотреть, есть ли у кого-нибудь пример (https://cloud.google.com/bigquery/docs/hive-partitioned-queries-gcs)

, например, в документации сказано: «файлы следуют компоновка по умолчанию с парами ключ / значение, размеченными как каталоги со знаком = в качестве разделителя, и ключи секционирования всегда в одном и том же порядке. "

Что не ясно, так это: а) Кафка создает эти каталоги на лету ИЛИ я должен предварительно создать их? Допустим, я ХОЧУ, чтобы KAFKA записывал в каталоги на основе даты в GCS

    gs://bucket/table/dt=2020-04-07/

Сегодня вечером, после полуночи, я должен предварительно создать этот новый каталог gs: // bucket / table / dt = 2020- 04-08 / или МОЖЕТ Кафка создать его для меня И во всем этом, как мне помогает разделение кустов LAYOUT?

Нужно ли иметь данные моей таблицы, которые я пытаюсь вставлять в эти каталоги каждый день? "dt" (из gs: // bucket / table / dt = 2020-04-07 /) в качестве столбца в нем?

Так как цель всего этого - запросить BigQuery к этой внешней таблице, которая лежит в основе ссылается на все данные в этом сегменте, т.е.

    gs://bucket/table/dt=2020-04-06/
    gs://bucket/table/dt=2020-04-07/
    gs://bucket/table/dt=2020-04-08/

Просто пытаюсь понять, будет ли это правильным подходом.

1 Ответ

1 голос
/ 11 апреля 2020

Kafka сама по себе является системой обмена сообщениями , которая позволяет обмениваться данными между процессами, приложениями и серверами, но для этого требуются производители и потребители ( здесь является примером), которые перемещают данные , Например:

  1. Производитель должен отправить данные в формате , который BigQuery может прочитать.

  2. И Потребитель должен записать данные с допустимой схемой улья.

Потребитель должен написать в GCS, поэтому вам необходимо найти соответствующий разъем для вашего приложения (например, этот Java разъем или Confluent разъем ). А при написании сообщений в GCS вам необходимо позаботиться об использовании действительного «макета разметки кустов по умолчанию».

Например, gs://bucket/table/dt=2020-04-07/, dt - это столбец, на который разбивается таблица, а 2020-04-07 - одно из ее значений, поэтому позаботьтесь об этом. Если у вас есть действующий макет Hive в GCS, вам нужно создать таблицу в BigQuery, я рекомендую исходную таблицу из пользовательского интерфейса, выбрав Google Cloud Storage в качестве источника и включив «Исходные данные разделены», но вы также можете использовать - hive_partitioning_source_uri_prefix и - hive_partitioning_mode , чтобы связать данные GCS с таблицей BigQuery.

Поскольку весь этот процесс подразумевает разные уровни разработки и конфигурации, если этот процесс имеет смысл для вас, я рекомендую вам открыть новые вопросы для любых конкретных c ошибок, которые могут возникнуть.

И последнее, но не менее важное: Разъем Kafka для BigQuery и другие разъемы для загрузки из Kafka в GCP может помочь лучше, если Hive Layout не является обязательным для вашего случая использования ,

...