Estou usando polybase para importar um arquivo parquet.
Com o tempo, é provável que possamos adicionar ou remover colunas nomeadas no arquivo.
Quando adiciono uma coluna adicional, recebo o erro abaixo:
Falha no acesso ao arquivo externo devido a um erro interno: 'Arquivo test.parquet: HdfsBridge::CreateRecordReader - Erro inesperado encontrado ao criar o leitor de registro: HadoopExecutionException: incompatibilidade de contagem de colunas. O arquivo de origem tem 16 colunas, a definição de tabela externa tem 15 colunas.'
Isso ocorre porque adicionei uma coluna adicional que não estava na definição da tabela externa.
Como o parquet contém um esquema de arquivo e a tabela externa conhece o nome de cada coluna, existe uma maneira de ignorar a coluna extra não utilizada?
Polybase não tem essa habilidade. O arquivo de origem e a definição de tabela externa devem corresponder para que funcionem. Basta adicionar ou remover colunas adicionais em sua definição de tabela externa. Então, quando você estiver criando fisicamente sua tabela no banco de dados, por exemplo, via CTAS, adicione/remova a(s) coluna(s) adicional(is) de sua instrução CTAS.
Como alternativa, considere a nova instrução COPY INTO . Isso tem a capacidade de especificar uma lista de colunas, por exemplo
No entanto, observe que esse recurso está i) atualmente em visualização, ii) para copiar em tabelas físicas (ou seja, não tabelas externas) e iii) não testei a lista de colunas especificamente com o Parquet.