aphonsoar / Receita_Federal_do_Brasil_-_Dados_Publicos_CNPJ

Dados Públicos de CNPJ disponibilizados pela Receita Federal do Brasil
MIT License
253 stars 108 forks source link

Killed #6

Closed jeff-pal closed 2 years ago

jeff-pal commented 3 years ago

Notei que no terminal do VS Code, o processo 'morre' na inserção de dados no banco, na execução de .to_sql().

aphonsoar commented 3 years ago

Tem algum print ou mensagem de erro? Quando vc diz "morre", o que exatamente vc se refere? Dependendo do arquivo esse processo leva um tempo considerável, pq é um insert grande.

jeff-pal commented 3 years ago

Em alguns casos, o processo é interrompido e exibida a mensagem Killed somente. Ao rodar o código em um terminal do VS Code obtive essa interrupção na inserção de Empresas, mas no terminal padrão funcionou normalmente. No entanto, minha hipótese sobre o terminal do VS Code não é válida, pois obtive essa interrupção no terminal padrão também, na inserção de Estabelecimentos. Ou seja, em alguns casos, os quais ainda não identifiquei o padrão, ocorre essa falha:

image

PS. O processo foi interrompido minutos depois da mensagem Skipping line 2606880.

aphonsoar commented 3 years ago

@jeff-pal isso talvez possa estar ocorrendo por lack de memória. Qual a configuração da máquina que vc está tentando rodar?

Veja que no arquivo do SIMPLES eu fiz um esquema de particionamento para inserir no DB, porque no meu laptop local estava dando lack de memória na hora de carregar o dataframe - não aguentou nos meus 8gb de ram. Devido a isso, apenas no arquivo do simples (que era o que estava dando lack), eu criei aquela estrutura de particionamento e aí funcionou normalmente.

Estou achando que vc pode estar tendo lack nesses outros arquivos. Se for isso, a solução seria implementar aquela estrutura também para os demais (empresa, estabelecimento e socio).

jeff-pal commented 3 years ago

'lack de memória', foi o que eu imaginei @aphonsoar, obrigado pela confirmação! Estou trabalhando na implementação de segmentação da leitura (em partes) para todas as inserções, seguindo um pouco do que você fez na inserção do Simples. Além disso, estou tento muito problema com encoding. Até implementei a detecção de file encoding, mas ainda assim em alguns arquivos estou tendo erro. Na imagem abaixo, a leitura do primeiro arquivo funcionou normalmente, já no segundo ocorreu erro:

image

Minha configuração:

image

aphonsoar commented 3 years ago

É memória mesmo então, certeza - E isso que seu computador é melhor que o meu. Quando eu fiz, eu estava com td fechado, nenhuma aba do chrome nem nada. Mas de qualquer forma é bom ter essa implementação mesmo para funcionar em "qualquer" ambiente.

Que bom que vc está implementando a separação das inserções, como do Simples. Vou deixar essa com vc então, tudo bem? Se vc não conseguir, ou estiver sem tempo, me avisa para eu fazer, ok?

Sobre o encoding, não tenho nenhuma outra ideia a princípio, vou dar uma analisada.

jeff-pal commented 3 years ago

A parte da fragmentação pode deixar comigo, inclusive, quando estiver pronto vou te mostrar a implementação de uma função/método que será reutilizada para todas as inserções, tipo assim:

image

mas ainda vou melhorar alguns detalhes, testar e validar, daí te mostro para você vê se é válido.