Como conectar ao Apache Druid pelo Calcite

Como conectar ao Apache Druid pelo CalciteGabriela Kishida KoreedaBlockedUnblockFollowFollowingMar 10Recentemente, tive um grande desafio no trabalho: utilizar um banco de dados Apache Druid.

A grande dificuldade veio do fato de eu já ter escrito uns 10 scripts em R, utilizando um banco no Redshift, então mudar as queries em sql para queries no formato JSON significaria um grande retrabalho.

Por isso, foi sugerido a utilização do conector Calcite, que possibilitaria a conexão via JDBC, além de ter suporte para realizar queries em sql.

O processo acabou sendo muito mais difícil do que esperado devido à alguns fatores como:Documentação oficial confusa;Falta de suporte da comunidade (stackoverflow);Druid ser um nome comum em jogos (dificultando a pesquisa no Google).

Por isso, nesse artigo irei abordar brevemente o que é o Druid e o Calcite, assim como realizar uma conexão pelo R.

DruidDruid é um banco de dados NoSQL desenvolvido pela Apache que ainda está em fase de incubação.

De acordo com o site oficial, Druid é descrito como:“…a high-performance, column-oriented, distributed data store”É uma aplicação open-source que combina princípios de OLAP, timeseries databases (TSDB) e sistemas de busca (Full Text Search).

O armazenamento de dados no Druid se baseia em timestamps o que o torna uma ótima opção para grande volumes de dados em tempo real.

Além disso, outros benefícios são: alta disponibilidade, alto nível de compressão de dados, etc…Algumas empresas que utilizam o Druid são:Airbnb;Alibaba;Cisco;Ebay;Netflix.

CalciteO Calcite é um framework de gerenciamento de dados dinâmico que, diferentemente da maioria dessas ferramentas, não tem as funcionalidades de armazenamento, algoritmos de processamento de dados e um repositório para armazenamento de metadados.

Isso é proposital de forma a facilitar a interação entre aplicações e mecanismos de armazenamento e processamento de dados.

Para realizar a conexão JDBC com o Druid nós utilizaremos o framework Avatica que é um subprojeto do Apache Calcite.

Ele é definido como uma API entre um servidor HTTP e um cliente (driver JDBC).

Conexão no RPara poder testar a conexão, você pode seguir o tutorial do site oficial do Druid para subir uma base teste.

A primeira coisa a se fazer é baixar todos os .

jar’s necessários neste link.

Então, carregamos a biblioteca RJDBC que possibilitará a conexão pelos jars.

A variável drivers é um vetor com o caminho para todos os jars presentes na pasta indicada, nós a utilizaremos como o argumento classPath na função JDBC que retornará um DBI driver.

O argumento driverClass para a conexão pelo calcite é “org.

apache.

calcite.

sql.

parser.

ddl.

SqlDdlParserImpl”.

Finalmente, podemos realizar a conexão à base pela função dbConnect, especificando as credenciais, como o host, port e schema, no seguinte formato: “jdbc:avatica:remote:url=http://<host>:<port>/druid/v2/sql/avatica/;schema=<schema>" (essa informação foi muito difícil de encontrar).

A partir do objeto conn, podemos fazer as queries normalmente com a função dbGetQuery.

Por fim, é sempre importante fechar a conexão pela função dbDisconnect.

ConclusãoApós ter trocado a conexão do RedShift para o Druid, tivemos um ganho significativo na performance.

Queries que estavam rodando em torno de 20s caíram para menos de 2s.

Atualmente, existe pouca documentação à respeito tanto do Calcite quanto do Druid já que ambas são tecnologias novas.

Mas espero ter difundido um pouco de conhecimento sobre elas de forma a propagar o seu uso e quem sabe, daqui a algum tempo, elas se tornarão tecnologias proeminentes.

ReferênciasDruid | Interactive Analytics at ScaleApache Druiddruid.

ioWhy Use Druid?.- HortonworksIn traditional EDWs data is broken into dimensional tables and fact tables.

Dimensions describe an object.

For example…community.

hortonworks.

comBackgroundCalcite intentionally stays out of the business of storing and processing data.

As we shall see, this makes it an…calcite.

apache.

org.

. More details

Leave a Reply