Я использую кластер AWS для обработки многих файлов JSON с вложенными данными в сведенные таблицы Hive.
Некоторые наборы данных очень большие, поэтому мне нужно разбить их на куски и создать отдельную маленькую таблицу Hive для каждого чанка, что приводит к тому, что у этих меньших таблиц разные столбцы.Например, table1
имеет столбцы A1....A1000
, table2
имеет столбцы A1,A3,A100,...A1000
и A1001
(поэтому некоторые столбцы являются общими, некоторые уникальны для каждой таблицы).
Есть ли способ добавить, объединить или объединить эти небольшие таблицы (может быть сотни таблиц, по ~ 1e7 строк в каждой) в одну большую таблицу Hive, в которой есть все столбцы из небольших таблиц (и NULL)в пропущенных ячейках для каждой маленькой таблицы, в которой изначально не было этого конкретного столбца)?Например, Total_table
со столбцами A1...A1001
?
UPD: команда printSchema () будет отображать что-то вроде этого:
root
|-- aaa: struct (nullable = true)
| |-- ids: array (nullable = true)
| | |-- element: struct (containsNull = true)
| | | |-- bb1: string (nullable = true)
| | | |-- bb2: string (nullable = true)
| | | |-- bb3: string (nullable = true)
Когда я выравниваю это, чтобы получить обычную таблицу Hive, в зависимости отнабор json-файлов, которые оказались в каждом чанке, количество элементов в массиве ids (например) может быть разным, и поэтому выходные столбцы также будут разными: как aaa_ids_bbb1_0 (для 0-го элемента массива ids) ,..., aaa_ids_bbb1_999 (для 999-го элемента, если там 1000 элементов).Таким образом, таблицы в каждом чанке могут быть разными.
В модуле Python для модулей, если я объединю 3 кадра данных со столбцами A, B, C (1-й), A, C, D (2-й) и D, E,F (3-е), результирующий кадр данных будет иметь столбцы A, B, C, D, E, F.Мне нужно сделать то же самое, но в Hive SQL, если это возможно, конечно.