Estou tentando criar uma nova conexão do DBeaver para um arquivo Delta Lake Parquet que está localizado no sistema de arquivos HDFS que criei com sucesso com um aplicativo Spark/Hadoop/Scala/io.delta.
(NOTA: Li que isso pode ser feito sem o servidor Thrift, mas apenas com uma configuração de driver JDBC e sem nome de banco de dados. Se isso não for verdade, por favor me avise.)
Primeiro configurando um driver através do gerenciador de drivers DBeaver adicionando as bibliotecas necessárias:
- hadoop-common-3.3.4.jar
- hadoop-hdfs-cliente-3.3.4.jar
- spark-core_2.13-3.4.3.jar
- io.delta_delta-core_2.13-2.4.0.jar (em vez de delta-core_2.13-2.4.0.jar)
- spark-sql_2.13-3.4.3.jar
Detalhes do DBeaver: Versão 25.0.1.202503240840
Usando a classe find, a classe do driver é retornada na tela de diálogo: org.apache.spark.sql.execution.datasources.jdbc.DriverWrapper do spark-sql_2.13-3.4.3.jar
Outras configurações são
- Modelo de URL: jdbc:spark://sparkmaster:7077
- Tipo de driver: genérico (não posso usar o modelo Apache Spark porque ele definirá incorretamente os detalhes para versões antigas como 1.2... Portanto, a configuração do tipo de driver genérico)
Outros detalhes do ambiente de cluster são:
- Tempo de execução Java 11
- Hadoop 3.3.4
- Faísca 3.4.3
- Scala 2.13.x
- Lago Delta 2.4.x
- Instância VMware [Ubuntu 22.04] (3 nós resp. 6,6,4gb mem.)
O erro que recebo é:
Erro na inicialização do driver 'delta-lake-driver'
Mensagem da tela de diálogo:
Can't create driver instance (class 'org.apache.spark.sql.execution.datasources.jdbc.DriverWrapper').
Error creating driver 'delta-lake-driver' instance.
Most likely required jar files are missing.
You should configure jars in driver settings.
Reason: can't load driver class 'org.apache.spark.sql.execution.datasources.jdbc.DriverWrapper'
org/apache/spark/SparkSQLFeatureNotSupportedException
org.apache.spark.SparkSQLFeatureNotSupportedException
org.apache.spark.SparkSQLFeatureNotSupportedException
Não vi nenhum exemplo para DBeaver com Apache Spark open source. Atualmente, tenho conexões de trabalho com MySQL em todos os 3 nós do meu cluster. As versões JAR parecem estar corretas, já que escrever a partir dos trabalhos do Apache Spark funciona com essas versões.
Alguém já tentou algo parecido usando Apache Spark de código aberto, Delta Lake, DBeaver?
Eu esperava que o gerenciador de driver tivesse todos os JARs necessários disponíveis. A criação da tabela e a leitura de um trabalho do Spark foi muito fácil, apenas incluindo a extensão do built.sbt e modificando o comando usando "delta" como formato. Então pensei que seria ainda mais fácil conectar-se a essa tabela usando o DBeaver para algumas consultas gerais.
Eu esperava que a lista da Biblioteca fosse mais do que suficiente, mencionada acima. Não há mais detalhes do que apenas "Arquivos jar mais provavelmente necessários estão faltando". Eu poderia adicionar todos os jars que a árvore de dependências relata, mas essa lista é bem grande.