Listando nomes de tabelas

Este artigo explica porquê spark.catalog.listTables() e %sql show tables tem diferentes características de desempenho.

Problema

Para obter todos os nomes de mesa da meta-loja pode usar ou spark.catalog.listTables() %sql show tables . Se observar a duração para obter os detalhes que pode ver spark.catalog.listTables() geralmente demora mais do que %sql show tables .

Causa

spark.catalog.listTables() tenta buscar primeiro os metadados de cada mesa e depois mostrar os nomes de mesa solicitados. Este processo é lento quando se lida com esquemas complexos e um maior número de tabelas.

Solução

Para obter apenas os nomes das mesas, use %sql show tables o que internamente invoca SessionCatalog.listTables o que só vai buscar os nomes das tabelas.