Erros do PolyBase e possíveis soluções

Aplica-se: SQL Server

Este artigo contém cenários de erro e soluções comuns para o PolyBase.

Para obter mais informações sobre monitoramento e solução de problemas do PolyBase, confira Monitorar e solucionar problemas do PolyBase.

Para locais comuns do arquivo de log do PolyBase no Windows e no Linux, confira Monitorar e solucionar problemas do PolyBase.

Mensagens de erro e possíveis soluções

Falha na atualização do SQL Server 2022 devido a nome de coluna inválido (diferencia maiúsculas de minúsculas)

Esse erro pode acontecer ao aplicar a instalação de atualizações cumulativas do SQL Server em um servidor com o recurso PolyBase instalado e usando o agrupamento que diferencia maiúsculas de minúsculas, a mensagem de atualização de erro relatada é a seguinte:

Mensagem de erro de exemplo: Error: 912, Severity: 21, State: 2. Script level upgrade for database 'master' failed because upgrade step 'polybase_database_upgrade.sql' encountered error 200, state 7, severity 25. This is a serious error condition which might interfere with regular operation and the database will be taken offline. If the error happened during upgrade of the 'master' database, it will prevent the entire SQL Server instance from starting. Examine the previous errorlog entries for errors, take the appropriate corrective actions and re-start the database so that the script upgrade steps run to completion.

Motivo:

Durante o procedimento de atualização, o script do SQL Server falha ao concluir com êxito devido a valores que diferenciam maiúsculas de minúsculas.

Solução: esse problema será corrigido permanentemente na próxima atualização cumulativa.

Solução alternativa:

  1. Habilitar o sinalizador de rastreamento 902.
  2. Inicie o SQL Server.
  3. Altere o agrupamento do banco de dados 'DWConfiguration' de CS (diferencia maiúsculas de minúsculas) para CI (diferencia maiúsculas de minúsculas).
  4. Execute novamente o upgrade.
  5. Desabilite o sinalizador de rastreamento 902.
  6. Reinicie o SQL Server.
  7. Altere novamente o agrupamento do banco de dados 'DWConfiguration', de CI (não diferencia maiúsculas de minúsculas) para CS (diferencia minúsculas de minúsculas).

Como alternativa a sinalizadores de rastreamento, para evitar que o problema aconteça antes de uma atualização cumulativa, verifique se o banco de dados 'DWConfiguration' está usando um agrupamento CS (diferenciação de maiúsculas e minúsculas). Considere alterá-lo para agrupamento sem distinção entre maiúsculas e minúsculas (CI), aplicar a atualização cumulativa, alterá-la de volta para o original.

Erro: "100001;Falha ao gerar plano de consulta"

O erro "Falha ao gerar plano de consulta" pode ocorrer quando o mecanismo de banco de dados do SQL Server teve uma correção aplicada para, pelo menos, a Atualização Cumulativa 8 (15.0.4073), mas o recurso PolyBase não foi atualizado para a mesma compilação. Isso pode ocorrer ao adicionar o recurso PolyBase a uma instância existente do SQL Server. Confira mais informações em Erro do PolyBase: 100001; Falha ao gerar plano de consulta.

Após a instalação do recurso PolyBase, atualize o novo recurso para o mesmo nível da versão. Instale os SPs (Service Packs), as CUs (atualizações cumulativas) e/ou as GDRs (versões de distribuição geral), conforme necessário. Para determinar a versão do PolyBase, examine este artigo para Determinar a versão, a edição e o nível de atualização do SQL Server e seus componentes.

Alterar conta de serviço

Mensagem de erro de exemplo:

107035; falha na autorização do DMS porque [DOMAIN\user] não é membro do grupo [PdwDataMovementAccess]
107017;Cabeçalho do controle DMS inválido:

Esse erro é provavelmente devido à alteração da conta de serviço do PolyBase. Para alterar as contas de serviço para os serviços de Mecanismo de PolyBase e de Movimentação de Dados do PolyBase, desinstale e reinstale o recurso PolyBase.

Erros de permissões de serviço de movimentação de dados

Para obter mais informações sobre como solucionar problemas de permissões com o serviço de movimentação de dados, confira Permissões de conta do serviço PolyBase e erros comuns observados quando eles estão ausentes.

Falha de autenticação do Windows

Para obter mais informações sobre como solucionar problemas de permissões relacionadas à falha de autenticação do Windows, confira Permissões de conta do serviço PolyBase e erros comuns observados quando eles estão ausentes.

Não foi possível executar a "Consulta Remota"

Mensagem de erro de exemplo:

Mensagem 7320, Nível 16, Estado 110, Linha 14
Não foi possível executar a "Consulta Remota" no provedor OLE DB "SQLNCLI11" para o servidor vinculado "(null)". Consulta anulada: o limite máximo de rejeição (0 linha) foi atingido ao executar a leitura de uma fonte externa: 1 linha rejeitada do total de 1 linha processada. (/nation/sensors.ldjson.txt)Ordinal da coluna: 0, Tipo de dados esperado: INT, Valor incorreto: {"id":"S2740036465E2B","time":"2016-02-26T16:59:02.9300000Z","temp":23.3,"hum":0.77,"wind":17,"press":1032,"loc":[-76.90914996169623,38.8929314364726]} (Erro de Conversão de Coluna), Erro: erro de conversão de tipo de dados NVARCHAR para INT.

Lembre-se de que esse erro pode ter derivações. O nome do primeiro arquivo rejeitado é mostrado no SSMS (SQL Server Management Studio) com tipos de dados ou valores incorretos.

Possível motivo:
O motivo pelo qual esse erro ocorre é porque cada arquivo tem um esquema diferente. Quando apontada para um diretório, a DDL da tabela externa do PolyBase lê recursivamente todos os arquivos desse diretório. Quando ocorre uma incompatibilidade de coluna ou tipo de dados, esse erro pode ser visto no SSMS.

Solução possível:
Se os dados de cada tabela consistem em um arquivo, use o nome do arquivo na seção LOCAL prefixada pelo diretório dos arquivos externos. Se você tem vários arquivos por tabela, coloque cada conjunto de arquivos em diferentes diretórios no Armazenamento de Blobs do Azure. Indique o LOCAL para o diretório em vez de um arquivo específico. Essa solução é recomendada.

Exemplo:

Create External Table foo
(col1 int)WITH (LOCATION='/bar/foobar.txt',DATA_SOURCE…); OR
Create External Table foo
(col1 int) WITH (LOCATION = '/bar/', DATA_SOURCE…);

Observação

O SQL Server Native Client (SNAC) não é fornecido com:

  • SQL Server 2022 (16.x) e versões posteriores
  • SQL Server Management Studio 19 e versões posteriores

O SQL Server Native Client (SQLNCLI ou SQLNCLI11) e o provedor OLE DB para SQL Server (SQLOLEDB) da Microsoft herdado não são recomendados para desenvolver um novo aplicativo.

Para novos projetos, use um dos seguintes drivers:

Para SQLNCLI que é fornecido como um componente do Mecanismo de Banco de Dados do SQL Server (versões 2012 a 2019), confira esta exceção de Ciclo de Vida de Suporte.

Suporte a Kerberos

O SQL Server está configurado para acessar um cluster Hadoop com suporte. A segurança do Kerberos não é imposta no cluster Hadoop.

A seleção da tabela externa retorna o seguinte erro:

Mensagem 105019, Nível 16, Estado 1, Linha 55
Falha no acesso à TABELA EXTERNA devido ao erro interno: "exceção Java gerada na chamada para HdfsBridge_Connect: erro [não foi possível instanciar LoginClass] ao acessar o arquivo externo."
Mensagem 7320, Nível 16, Estado 110, Linha 55
Não foi possível executar a "Consulta Remota" no provedor OLE DB "SQLNCLI11" para o servidor vinculado "(null)". Falha no acesso à TABELA EXTERNA devido ao erro interno: "exceção Java gerada na chamada para HdfsBridge_Connect: erro [não foi possível instanciar LoginClass] ao acessar o arquivo externo."

A interrogação do log servidor do DWEngine mostra o seguinte erro:

[Thread:16432] [EngineInstrumentation:EngineQueryErrorEvent] (Error, High):
Falha no acesso à TABELA EXTERNA devido a um erro interno: "exceção Java gerada na chamada para HdfsBridge_Connect: Erro [com.microsoft.polybase.client.KerberosSecureLogin] ao acessar o arquivo externo." Microsoft.SqlServer.DataWarehouse.Common.ErrorHandling.MppSqlException: Falha no acesso à TABELA EXTERNA devido a um erro interno: "exceção Java gerada na chamada para HdfsBridge_Connect: Erro [com.microsoft.polybase.client.KerberosSecureLogin] ao acessar o arquivo externo." ---> Microsoft.SqlServer.DataWarehouse.DataMovement.Common.ExternalAccess.HdfsAccessException: exceção Java gerada na chamada para HdfsBridge_Connect: Erro [com.microsoft.polybase.client.KerberosSecureLogin] ao acessar o arquivo externo.

Possível motivo:
O Kerberos não está habilitado no cluster Hadoop, mas a segurança do Kerberos está habilitada em core-site.xml, yarn-site.xml ou hdfs-site.xml localizados, por padrão, em Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf. No Linux, os arquivos estão, por padrão, localizados em /var/opt/mssql/binn/polybase/hadoop/conf/.

Solução possível:
Comente as informações de segurança do Kerberos dos arquivos mencionados acima.

Para obter mais informações sobre como solucionar problemas do PolyBase e do Kerberos, confira Solucionar problemas de conectividade do PolyBase do Kerberos.

Erro do processador de consulta interna

Consultar uma tabela externa retorna o seguinte erro:

Mensagem 8680, Nível 17, Estado 5, Linha 118
Erro interno do processador de consultas: erro inesperado durante o processamento de uma fase de consulta remota.

O log do servidor do DWEngine contém as seguintes mensagens:

[Thread:5216] [ControlNodeMessenger:ErrorEvent] (Error, High): ***** o sistema DMS tem nós desconectados:
[Thread:5216] [ControlNodeMessenger:ErrorEvent] (Error, High): ***** o sistema DMS tem nós desconectados:
[Thread:5216] [ControlNodeMessenger:ErrorEvent] (Error, High): ***** o sistema DMS tem nós desconectados:

Possível motivo:
O motivo desse erro pode ser devido ao SQL Server não ser reiniciado após a configuração do PolyBase.

Solução possível:
Reinicie o SQL Server. Verifique o log do servidor do DWEngine para confirmar se não há desconexões DMS após a reinicialização.

Para acessar o HDFS, o usuário é obrigatório

Cenário:
SQL Server está conectado a um cluster Hadoop não seguro (Kerberos não está habilitado). O PolyBase está configurado para enviar por push a computação para o cluster do Hadoop.

Exemplo de consulta:

select count(*) from foo WITH (FORCE EXTERNALPUSHDOWN);

Se uma mensagem de erro semelhante à seguinte for exibida:

Mensagem 105019, Nível 16, Estado 1, Linha 1
Falha de acesso à TABELA EXTERNA devido a um erro interno: "exceção Java gerada na chamada para JobSubmitter_PollJobStatus: Erro [java.net.ConnectException: falha na chamada de big1506sql2016/172.16.1.4 to 0.0.0.0:10020 na exceção de conexão: java.net ConnectException: Conexão recusada: não há mais informações; Para obter mais detalhes, confira: http://wiki.apache.org/hadoop/ConnectionRefused] ao acessar o arquivo externo."
O provedor de OLE DB "SQLNCLI11" para o servidor vinculado "(null)" retornou a mensagem "Erro não especificado".
Mensagem 7421, Nível 16, Estado 2, Linha 1
Não é possível extrair o conjunto de linhas do provedor OLE DB "SQLNCLI11" para o servidor vinculado "(null)". .

Erro do log de Yarn do Hadoop:

Falha na instalação do trabalho: org.apache.hadoop.security.AccessControlException: permissão negada: user=pdw_user, access=WRITE, inode="/user":hdfs:hdfs:drwxr-xr-x at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkFsPermission(FSPermissionChecker.java:265) em org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:251) em org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:232) org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:176) em org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:5525)

Possível motivo:
Com o Kerberos desabilitado, o PolyBase usará pdw_user como o usuário para acessar o HDFS e enviar trabalhos MapReduce.

Solução possível:
Criar o pdw_user no Hadoop e conceder a ele permissões suficientes para os diretórios usados durante o processamento do mapreduce. Verifique também se pdw_user é o proprietário do diretório HDFS /user/pdw_user.

Veja abaixo um exemplo de como criar o diretório base e atribuir permissões para pdw_user:

sudo -u hdfs hadoop fs -mkdir /user/pdw_user
sudo -u hdfs hadoop fs -chown pdw_user /user/pdw_user

Depois disso, verifique se pdw_user tem permissões de leitura, gravação e execução no diretório /user/pdw_user. Verifique se o diretório /tmp tem 777 permissões.

Para obter mais informações sobre como solucionar problemas do PolyBase e do Kerberos, confira Solucionar problemas de conectividade do PolyBase do Kerberos.

Erro de memória do Java devido a UTF-8

Cenário:
O PolyBase do SQL Server é configurado com o cluster Hadoop ou o Armazenamento de Blobs do Azure. Qualquer consulta Select falha com o seguinte erro:

Mensagem 106000, Nível 16, Estado 1, Linha 1
Espaço de heap de Java

Possível motivo:
A entrada ilegal pode causar o erro de memória insuficiente do Java. O arquivo pode não estar no formato UTF-8. O DMS tenta ler o arquivo inteiro como uma linha, uma vez que ele não pode decodificar o delimitador de linha e é executado no erro de espaço de heap de Java.

Solução possível:
Converta o arquivo em formato UTF-8, pois o PolyBase atualmente requer o formato UTF-8 para arquivos delimitados por texto.

Conectividade e configuração do Hadoop

Configurar o PolyBase do SQL Server para se conectar ao Armazenamento de Blobs do Azure retorna a seguinte mensagem de erro no SQL Server:

Mensagem 105019, Nível 16, Estado 1, Linha 74
Falha no acesso à TABELA EXTERNA devido a um erro interno: "exceção Java gerada na chamada para HdfsBridge_Connect: erro [Nenhum Arquivo de Sistema para o esquema: wasbs] ao acessar o arquivo externo."

Possível motivo:
A conectividade do Hadoop não está definida para o valor de configuração para acessar o Armazenamento de Blobs do Azure.

Solução possível:
Defina a conectividade do Hadoop com um valor (preferencialmente 7) que dá suporte ao Armazenamento de Blobs do Azure e reinicie o SQL Server. Para obter uma lista de valores de conectividade e tipos com suporte, veja Configuração de Conectividade do PolyBase.

Erro CREATE TABLE AS SELECT

Cenário:
A tentativa de exportar dados do Armazenamento de Blobs do Azure ou do sistema de arquivos do Hadoop usando o PolyBase com a sintaxe CETAS (CREATE EXTERNAL TABLE AS SELECT) por meio do SQL Server gera uma falha com a seguinte mensagem de erro:

Mensagem 156, Nível 15, Estado 1, Linha 177
Sintaxe incorreta próxima à palavra-chave 'WITH'.
Mensagem 319, Nível 15, Estado 1, Linha 177
Sintaxe incorreta próxima à palavra-chave 'with'. Se esta instrução for uma expressão de tabela comum, uma cláusula xmlnamespaces ou uma cláusula de contexto de controle de alterações, a instrução anterior deverá terminar com ponto-e-vírgula.

Possível motivo:
Ao exportar dados para o Hadoop ou Armazenamento de Blobs do Azure por meio do PolyBase, somente os dados serão exportados, não os nomes das colunas (metadados) conforme definido no comando CRIAR TABELA EXTERNA.

Solução possível:
Crie a tabela externa primeiro e use INSERT INTO SELECT para exportar para o local externo. Para obter um exemplo de código, confira Cenários de consulta do PolyBase.

Falha ao criar tabela externa por meio do Armazenamento de Blobs do Azure

Cenário:
O pool de SQL dedicado (anteriormente SQL DW) é configurado para importar dados do Armazenamento de Blobs do Azure. A criação de tabela externa falha com a seguinte mensagem.

Mensagem 105019, Nível 16, Estado 1, Linha 34
Falha no acesso à EXTERNAL TABLE devido ao erro interno: "exceção Java gerada na chamada para HdfsBridge_IsDirExist. Mensagem de exceção Java:com.microsoft.azure.storage.StorageException: o servidor falhou ao autenticar a solicitação. Verifique se o valor do cabeçalho de autorização está formado corretamente, incluindo a assinatura: erro [com.microsoft.azure.storage.StorageException: o servidor falhou ao autenticar a solicitação. Verifique se o valor do cabeçalho de autorização está formado corretamente, incluindo a assinatura.] ocorreu ao acessar o arquivo externo."

Possível motivo:
A chave de armazenamento do Azure incorreta foi usada para criar a credencial no escopo do banco de dados.

Solução possível:
Remova todos os objetos relacionados (ou seja, fonte de dados, formato de arquivo) e descarte e recrie a credencial no escopo do banco de dado com a chave de armazenamento correta.

Uso de maiúsculas na configuração Kerberos

Cenário:
O SQL Server é configurado com o cluster Cloudera habilitado para Kerberos. O SQL Server foi reiniciado após todas as alterações de configuração. O mecanismo PolyBase e os serviços de Movimentação de Dados PolyBase estão em execução após a reinicialização. A seguinte mensagem de erro será retornada:

Fonte de Dados configurada sem local do rastreador de trabalho:

org.apache.hadoop.fs.FileSystem: não foi possível instanciar o provedor org.apache.hadoop.fs.viewfs.ViewFileSystem

Fonte de Dados configurada com local do rastreador de trabalho:

Erro [Não é possível obter o realm do Kerberos] ao acessar o arquivo externo

Possível motivo:
O valor da propriedade "hadoop.security.authentication" indica o Kerberos no Coresite.xml.

Solução possível:
A propriedade "hadoop.security.authentication" do Coresite.xml deve ter como valor KERBEROS (todas as letras maiúsculas).

Para obter mais informações sobre como solucionar problemas do PolyBase e do Kerberos, confira Solucionar problemas de conectividade do PolyBase do Kerberos.

Valores necessários de Mapred-site.xml ausentes

Cenário:
O SQL Server ou APS é configurado com o cluster HDP com suporte. Consultas que não exigem trabalho de pushdown, mas falham com a seguinte mensagem quando a dica 'FORCE PUSHDOWN', são usadas com as seguintes mensagens de erro:

Mensagem 7320, Nível 16, Estado 110, Linha 35
Não foi possível executar a "Consulta Remota" no provedor OLE DB "SQLNCLI11" para o servidor vinculado "(null)". Falha no acesso à EXTERNAL TABLE devido ao erro interno: "a exceção Java foi gerada na chamada para JobSubmitter_PollJobStatus: erro [org.apache.hadoop.ipc.RemoteException(java.lang.NullPointerException): java.lang.NullPointerException
em org.apache.hadoop.mapreduce.v2.hs.HistoryClientService$HSClientProtocolHandler.getTaskAttemptCompletionEvents(HistoryClientService.java:277)
em org.apache.hadoop.mapreduce.v2.api.impl.pb.service.MRClientProtocolPBServiceImpl.getTaskAttemptCompletionEvents(MRClientProtocolPBServiceImpl.java:173)
em org.apache.hadoop.yarn.proto.MRClientProtocol$MRClientProtocolService$2.callBlockingMethod(MRClientProtocol.java:283)
em org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:619)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:962)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2127)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2123)
at java.security.AccessController.doPrivileged(Método Nativo)
at javax.security.auth.Subject.doAs(Subject.java:415)
em org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671)
em org.apache.hadoop.ipc.Server$Handler.run(Server.java:2121)
] ao acessar o arquivo externo."

Possível motivo:
Alguns valores necessários de Mapred-site.xml que verificam os resultados intermediários e finais estão ausentes.

Solução possível:
Adicione as seguintes propriedades e associe os valores corretos conforme mostrado em Ambari no arquivo de mapred-site.xml no SQL Server.

<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/user</value>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/mr-history/done</value>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/mr-history/tmp</value>
</property>

Configurando o acesso pelo nome do host

Cenário:
O SQL Server está configurado para acessar um cluster Hadoop com suporte. A criação de uma tabela externa retorna um dos seguintes erros:

Não foi possível executar a "Consulta Remota" no provedor OLE DB "SQLNCLI11" para o servidor vinculado "(null)". 110802;Ocorreu um erro interno de DMS que causou falha na operação. Detalhes: exceção: Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.DmsSqlNativeException, Mensagem: SqlNativeBufferReader.Run, erro em OdbcExecuteQuery: SqlState: 42000, NativeError: 8680, "Erro ao chamar: SQLExecDirect(this->GetHstmt(), (SQLWCHAR *)statementText, SQL_NTS), Código de retorno SQL: -1 | SQL Informação de erro: SrvrMsgState: 26, SrvrSeverity: 17, Erro <1>: ErrorMsg: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Erro interno do processador de consulta: o processador de consultas encontrou um erro inesperado durante o processamento de uma fase de consulta remota. | Erro ao chamar: ppReadConn->ExecuteQuery(statementText, bufferFormat) | estado: FFFF, número: 24, conexões ativas: 8', Cadeia de conexão: Driver={pdwodbc};APP=RCSmall-DmsNativeReader:WAD1D16HD2001\mpdwsvc (3600)-ODBC-PoolId1433;Trusted_Connection=yes;AutoTranslate=no;Server=\.\pipe\sql\query

[Thread:30544] [AbstractReaderWorker:ErrorEvent] (Error, High): QueryId QID2433 PlanId 6c3a4551-e54c-4c06-a5ed-a8733edac691 StepId 7:
Não foi possível obter bloco: BP-1726738607-192.168.225.121-1443123675290:blk_1159687047_86196509 file=/user/hive/warehouse/u_data/000000_0
Microsoft.SqlServer.DataWarehouse.Common.ErrorHandling.MppSqlException: não foi possível obter bloco: BP-1726738607-192.168.225.121-1443123675290:blk_1159687047_86196509 file=/user/hive/warehouse/u_data/000000_0
em Microsoft.SqlServer.DataWarehouse.DataMovement.Common.ExternalAccess.HdfsBridgeReadAccess.Read(MemoryBuffer buffer, Boolean& isDone)
em Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.DataReader.ExternalMoveBufferReader.Read()
em Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.ExternalMoveReaderWorker.ReadAndSendData()
em Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.ExternalMoveReaderWorker.Execute(Object status)

Possível motivo:
Essa mensagem de erro pode aparecer quando o cluster Hadoop é instalado em uma configuração em que os nós de dados só podem ser acessados fora do cluster usando o nome do host e não o endereço IP.

Solução possível:
Adicione o seguinte ao arquivo hdfs-site.xml no lado do cliente (SQL Server). Essa configuração forçará o nó de nome a retornar um URI para os nós de dados com o nome do host em vez do endereço IP interno.

<property>
<name>dfs.client.use.datanode.hostname</name>
<value>true</value>
</property>

A organização da pasta força o excesso de sobrecarga de memória

Cenário:
O SQL Server está executando uma consulta do PolyBase em um diretório com um número grande de arquivos (>30.000 arquivos sob o caminho do diretório recursivamente) e uma das seguintes mensagens de erro é retornada:

Mensagem 105019, Nível 16, Estado 1, Linha 1
Falha no acesso à EXTERNAL TABLE devido ao erro interno: "exceção Java gerada na chamada para HdfsBridge_GetFileNameByIndex. Mensagem de exceção Java: limite de sobrecarga de GC excedido: erro [limite de sobrecarga de GC excedido] ao acessar arquivo externo."

Mensagem 105019, Nível 16, Estado 1, Linha 1
Falha no acesso à EXTERNAL TABLE devido ao erro interno: "exceção Java gerada na chamada para HdfsBridge_GetFileNameByIndex. Mensagem de exceção Java: espaço de heap Java: erro [espaço de heap Java] ao acessar arquivo externo."

Possível motivo:
Ao processar um caminho, o PolyBase enumera todos os arquivos nesse caminho e há sobrecarga de memória fixa associada à estrutura de dados usada para representar os arquivos. Com um grande número de arquivos, essa sobrecarga se torna perceptível e pode eventualmente consumir toda a memória disponível para a JVM.

Solução possível:
Reorganize os dados em vários diretórios para que cada um deles contenha um subconjunto de arquivos e faça várias consultas separadas para que elas operam em uma parte do caminho original de cada vez e materializem as tabelas como SQL Server (antes de se juntar a elas).

Exemplo: vamos supor que os dados da tabela externa estejam no seguinte local: Orders/file1.txt,...,file30K.txt.

Altere o layout para que os dados sejam dispostos em uma estrutura de partição de arquivo convencional em Orders/dd/mm/aaaa/file1.txt. Direcione sua tabela externa para um caminho de diretório inferior, como mês (mm) ou dia (dd), e importe os arquivos para tabelas SQL Server em partes e, em seguida, adicione-os como parte de uma tabela. Mesmo que você tenha a estrutura de diretório certa para começar, siga a etapa 2 para poder trabalhar com esses arquivos sem ficar fora da memória da JVM.

Caracteres inesperados em arquivos de configuração

Cenário:
Configurar o SQL Server ou APS com um cluster Hadoop envolvendo a modificação de yarn-site.xml, hdfs-site.xml e outros arquivos de configuração. A seguinte mensagem de erro do SQL Server é observada:

Mensagem 105019, Nível 16, Estado 1, Linha 1
Microsoft.SqlServer.DataWarehouse.Common.ErrorHandling.MppSqlException: falha no acesso à EXTERNAL TABLE devido a um erro interno: "exceção Java gerada na chamada para HdfsBridge_Connect. Mensagem de exceção de Java:com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: byte 1 inválido de sequência UTF-8 de 1 byte.: erro [com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: byte 1 inválido de sequência UTF-8 de 1 byte.] ocorreu ao acessar o arquivo externo." --->

Possível motivo:
Isso pode acontecer se você copiou e colou o texto em arquivos de configuração de um site ou de uma janela de chat. É possível que os caracteres indesejados/não imprimíveis estejam nos arquivos de configuração.

Solução possível:
Abra os arquivos em um editor de texto diferente (diferente do bloco de notas), procure esses caracteres e elimine-os. Reinicie os serviços necessários.

Consulta da tabela Delta pode falhar com erros 2571 e 16513

Cenário:
Você pode encontrar o seguinte erro ao consultar uma tabela Delta externa:

Msg 2571, Level 14, State 3, Line 1
User '<user>' does not have permission to run DBCC TRACEON.
Msg 16513, Level 16, State 0, Line 1
Error reading external metadata.

Possível motivo:
Isso pode acontecer porque há uma dica de consulta QUERYTRACEON que pode ser adicionada à consulta de metadados de arquivo Delta e que requer a função de servidor sysadmin para ser executada.

Solução possível:
Se isso ocorrer, você poderá resolver o problema habilitando globalmente o sinalizador de rastreamento 14073 e isso impedirá que a dica de consulta seja adicionada.

Confira também