Spark SQL Insert Выберите со списком столбцов? - PullRequest
0 голосов
/ 09 января 2019

Когда я читаю документацию Spark / Hive SQL, появляется сообщение, что Вставка в таблицу с списком столбцов не поддерживается в Spark 2.4 и более ранних версиях.

У меня есть исходная таблица и таблица назначения с различным количеством столбцов и разными именами столбцов, которые мне нужно скопировать.

Значит ли это, что для выполнения этой работы мне нужно написать код в PySpark, поскольку Spark SQL не сможет это сделать ??

Пример:

input_table( cola, colb, colc, cold, cole)

output_table(fieldx, fieldy, fieldz)

В SQL (при условии, что СУБД, такие как MS-SQL, PostgreSQL и т. Д.), Я бы сделал следующее:

insert into output_table(fieldx, fieldy, fieldz) select cola, colb, colc from input_table

Spark SQL не допускает этого, он не принимает список столбцов в инструкции вставки SQL.

Вопрос : как я могу выполнить эту задачу с минимумом кода и максимальной производительностью в PySpark или (в идеале) в Spark-SQL (я использую Spark 2.4)?

спасибо

1 Ответ

0 голосов
/ 09 января 2019

Укажите столбцы в output, которые не будут скопированы из input_table как null в select. (Это то, что происходит, когда только 100 столбцов, если это разрешено, будет insert редактировать только набор столбцов, а не все)

insert into output_table
select cola, colb, colc,null as other1,--..specify non-copied column values as null 
from input_table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...