Преобразование в набор данных искры - PullRequest
0 голосов
/ 16 мая 2018

У меня есть несколько таблиц базы данных в СУБД, в текущей логике все эти таблицы объединены и дают некоторые данные, в основном SQL хранится как часть представления. хотите сделать аналогичный вид преобразования в искре с использованием наборов данных искры, Теперь я использовал sqoop для передачи данных в HDFS, хочу применить некоторую группировку и упорядочить по операции.

что может быть лучшим способом присоединения к набору данных, например, выгрузить требуемые столбцы в память (ike df.registeredTempTable ()) и применить объединения, или я могу использовать объединения наборов данных, поскольку данные доступны в разных файлах в HDFS. пожалуйста, предложите мне хороший подход.

С уважением Ananth

1 Ответ

0 голосов
/ 16 мая 2018

Я бы предложил пойти немного дальше.Я бы не стал использовать соединение между наборами данных.

Я бы следовал следующему подходу:

  1. Sqoop всех таблиц, участвующих в процессе.
  2. Используйте Apache Spark или Apache Crunch для создания документов Avro.
  3. Смонтируйте таблицу Hive к данным, созданным на предыдущем шаге.

Давайте поиграем с примером, который вы упомянули:

1.Sqoop данных: вы уже рассмотрели этот шаг.

2.Создание документов Avro

Фиктивные данные

Departament
id, name
1 Sales
2 Technology

Employers
id, department_id, name
1 1 John
2 1 Bruno
3 2 Alicia
4 2 George

Структура документа будет зависеть от того, как вы собираетесь использовать данные, может быть 2 варианта:

Работодатель

{"name": "John", "department": "Sales"}
{"name": "Bruno", "department": "Sales"}
{"name": "Alicia", "department": "Technology"}
{"name": "George", "department": "Technology"}

Отдел

{"name": "Sales", "Employers": ["John", "Bruno"]}
{"name": "Technology", "Employers": ["Alicia", "George"]}

Тогда запросы гораздо проще выполнять.

Преимущество использования этого подхода состоит в том, что при наличии модели реляционной базы данных со слишком большим количеством таблиц ваши запросы становятся более сложными, а также, когда таблицы слишком велики по размеру, объединение данных при запускеВремя - это дорогое время, потому что вы хотите передавать данные во время конвейера ETL, а не во время выполнения.

Надеюсь, это прояснит подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...