Solução de problemas dos common core services
Use essas soluções alternativas para solucionar problemas que você possa encontrar com o Flight service ou outros problemas em common core services.
Não é possível carregar grandes conjuntos de dados se o ambiente do notebook não tiver memória suficiente
Você recebe um erro que informa que o kernel do notebook está sendo reiniciado porque o kernel morreu durante a execução do código gerado que carrega dados de uma conexão com o notebook. Você recebe um "FlightTimedOutError" quando executa o código gerado. Esse erro de tempo limite ocorre somente se o código gerado usar Flight service.
Causa
O motivo é que você está tentando carregar uma grande quantidade de dados no notebook em um ambiente de tempo de execução com memória limitada.
Quando você carrega grandes conjuntos de dados em uma estrutura de dados específica em um notebook, normalmente precisa de mais memória do que o tamanho dos dados de origem no disco. A quantidade de memória depende diretamente da estrutura de dados de destino e do tipo de dados. É necessária memória adicional para estruturas de dados intermediárias que são criadas durante o processo de transferência de dados da origem, dependendo do mecanismo de transferência, como o Flight service, JDBC ou outros.
Resolvendo o problema
Certifique-se de que esteja executando o notebook em um ambiente de tempo de execução que seja grande o suficiente para carregar os conjuntos de dados com os quais deseja trabalhar. Se os ambientes fornecidos não forem grandes o suficiente, você poderá criar um modelo de ambiente personalizado.
Não é possível executar o código gerado a partir de uma funcionalidade obsoleta para carregar dados para uma conexão com Informix
Você recebe a mensagem "DatabaseError: A execução falhou no sql: ... unable to rollback" ao executar o código que é gerado para carregar dados de um banco de dados Informix ao usar a funcionalidade obsoleta e você tenta consultar uma tabela com um nome em maiúsculas.
Causa
O banco de dados Informix está configurado para identificadores que diferenciam maiúsculas de minúsculas e você precisa atualizar o código gerado.
Resolvendo o problema
Se possível, mude para o código que é gerado usando o Flight service para carregar dados de uma conexão Informix. Se quiser continuar usando o código gerado pela funcionalidade obsoleta, você precisará editar o código gerado da seguinte forma:
Para Python, adicione a propriedade de conexão '
'DELIMIDENT=Y'à conexão e coloque o identificador em caixa alta entre aspas duplas (""). Substitua as seguintes linhas:Informix_connection = jaydebeapi.connect('com.informix.jdbc.IfxDriver', '{}://{}:{}/{}:user={};password={};'.format('jdbc:informix-sqli', Informix_metadata['host'], Informix_metadata['port'], Informix_metadata['database'], Informix_metadata['username'], Informix_metadata['password']), [Informix_metadata['username'], Informix_metadata['password']]) query = 'SELECT * FROM informix.FVT_EMPLOYEE'Com:
Informix_connection = jaydebeapi.connect('com.informix.jdbc.IfxDriver', '{}://{}:{}/{}:user={};password={};DELIMIDENT=Y;'.format('jdbc:informix-sqli', Informix_metadata['host'], Informix_metadata['port'], Informix_metadata['database'], Informix_metadata['username'], Informix_metadata['password']), [Informix_metadata['username'], Informix_metadata['password']]) query = 'SELECT * FROM informix."FVT_EMPLOYEE"'Para o Spark com Python, substitua:
data_df_0 = sparkSession.read.format('jdbc') \ .option('url', 'jdbc:informix-sqli://{}:{}/{}'.format(Informix_metadata['host'],Informix_metadata['port'],Informix_metadata['database'])) \ .option('dbtable', 'informix.FVT_EMPLOYEE') \ .option('user', Informix_metadata['username']) \ .option('password', Informix_metadata['password']).load() data_df_0.show(5)Com:
data_df_0 = sparkSession.read.format('jdbc') \ .option('url', 'jdbc:informix-sqli://{}:{}/{}'.format(Informix_metadata['host'],Informix_metadata['port'],Informix_metadata['database'])) \ .option('dbtable', 'informix."FVT_EMPLOYEE"') \ .option('DELIMIDENT', 'Y') \ .option('user', Informix_metadata['username']) \ .option('password', Informix_metadata['password']).load() data_df_0.show(5)Para o R, adicione a propriedade de conexão "
'DELIMIDENT=Y'à conexão e coloque todos os nomes em letras maiúsculas entre aspas duplas (""). Substitua as seguintes linhas:paste("jdbc:informix-sqli://", Informix_credentials[][["host"]], ":", Informix_credentials[][["port"]], "/", Informix_credentials[][["database"]], ":user=", Informix_credentials[][["username"]], ";password=", Informix_credentials[][["password"]], ";", sep=""), ... query <- "SELECT * FROM myschema.MY_TABLE"Com:
paste("jdbc:informix-sqli://", Informix_credentials[][["host"]], ":", Informix_credentials[][["port"]], "/", Informix_credentials[][["database"]], ":user=", Informix_credentials[][["username"]], ";password=", Informix_credentials[][["password"]],";DELIMIDENT=Y", ";", sep=""), ... query <- "SELECT * FROM myschema.\"MY_TABLE\""