/
Guideline - Devs (Databricks)


Orientação para criação de branches no Bitbucket

Referencia de como integrar o Bitbucket no Databricks: https://dtxlab.atlassian.net/wiki/spaces/DGA/pages/2544107521  

SEMPRE CRIAR BRANCH NOVAS PARTINDO DA BRANCH DEVELOP. 

Todas as nossas branches deverão ser de um dos quatro tipos abaixo. 

  • Release (implantação de um novo processo/integração)

  • Feature (novos recursos/integrações de um processo que já existe)

  • Hotfix (correção/ajuste de processos que não apresentam erro. Melhoria ou ajuste de uma regra, por exemplo)

  • Bugfix (correção de erro(s) em produção. Processos impactados e prejudicados por alguma exceção)

 

Na sequência deveremos informar o número da tarefa no Jira e o nome do responsável.

Referencia de como integrar o Bitbucket com o Jira: https://dtxlab.atlassian.net/wiki/spaces/DGA/pages/2803007489

 

Exemplo:

release/DGA-861/lucas_falotico

 Uma vez que essa branch teve seu desenvolvimento concluído e refletido nas branchs develop e master, poderemos excluir do bitbucket.

 

Check List de Deploy para Develop e Produção

 

  • Solicitações para arquitetura:

    • Criação de PR

      • Informar o link da PR 

    • Criação de Secret

      • informar ESCOPO e CHAVE (scope / key). Se tiverem dúvidas quanto a isso, perguntem.

    • Liberação de JOB e Mount

      • Nome do JOB 

      • Nome do Mount Utilizado

    • Execução de Job em Produção

      • Informar para executar o JOB após a execução da PR (GARANTIR que o processo foi executado com sucesso em DEV)

    • Carga de Tabelas (Entre Ambientes)

      • Informar todas as tabelas necessárias, sejam tabelas finais ou estáticas do processo.

      • Informar ambiente origem e ambiente destino

      • Informar se têm ou não partição

      • Garantir que tenham o Create Table If Not Exists nos notebooks de processamento

  • Validação em DEV dos processos desenvolvidos antes da PR para MASTER

  • Incluir Evidências de Execução do JOB Databricks na Tarefa Jira (ou na própria Pull Request). Essa evidência facilitará na validação da alteração pelo APROVADOR da PR.


Como acessar um banco de dados MySql

1from pyspark.sql.functions import * 2 3host = "" 4user = "" 5password = "" 6port = "" 7dbDatabase = "" 8driver= "com.mysql.jdbc.Driver" 9url= "jdbc:mysql://"+host+":"+port+"/"+dbDatabase+"" 10 11def read_table_mysql(sqlQuery): 12 13 try: 14 df = spark.read.format("jdbc")\ 15 .option("driver", driver)\ 16 .option("url", url)\ 17 .option("query", sqlQuery)\ 18 .option("user", user)\ 19 .option("password", password)\ 20 .load() 21 22 return df 23 24 except Exception as ex: 25 print(f"❌ Erro na leitura da query") 26 print(ex) 27 pass

ref: https://docs.databricks.com/external-data/mysql.html

Como acessar um banco de dados Postgres

1from pyspark.sql.functions import * 2 3host = "" 4dbname = "" 5user = "" 6password = "" 7port = 5432 8 9bucket_name = dbutils.secrets.get(scope = 'PROCESS_ETL_ANALYTICKS_DATABRICKS_API', key = 'BUCKET_TEMP_DATA_TRANSFER') 10 11aws_access = dbutils.secrets.get(scope = 'AWS_SVC_S3_DATA_TRANSFER', key = 'ACCESS_KEY') 12aws_secret = dbutils.secrets.get(scope = 'AWS_SVC_S3_DATA_TRANSFER', key = 'SECRET_KEY') 13sc._jsc.hadoopConfiguration().set("fs.s3a.access.key", aws_access) 14sc._jsc.hadoopConfiguration().set("fs.s3a.secret.key", aws_secret) 15 16conn_string = f'jdbc:postgresql://{host}:{port}/{dbname}?user={user}&password={password}' 17 18def query_postgres(select, nome_tabela): 19 20 try: 21 22 tempdir = f"s3a://{bucket_name}/Redshift/PRODUTOS-DIGITAIS/{tabela}" 23 24 df = (spark.read.format("jdbc") 25 .option("url", conn_string) 26 .option("forward_spark_s3_credentials", "true") 27 .option("query", select) 28 .option("tempdir", tempdir) 29 .option("driver", "org.postgresql.Driver") 30 .load()) 31 return df 32 33 except Exception as ex: 34 print(f"❌ Erro na leitura da query") 35 print(ex) 36 pass

ref:https://docs.databricks.com/external-data/postgresql.html

Como acessar um banco de dados Sql Server

1# DBTITLE 1,Configuração SQL Server 2host = dbutils.secrets.get(scope = 'DB_ETIQUETA_SQL_SERVER', key = 'HOST') 3database = dbutils.secrets.get(scope = 'DB_ETIQUETA_SQL_SERVER', key = 'DATABASE') 4password = dbutils.secrets.get(scope = 'DB_ETIQUETA_SQL_SERVER', key = 'PASS') 5user = dbutils.secrets.get(scope = 'DB_ETIQUETA_SQL_SERVER', key = 'USER') 6 7server_name = f"jdbc:sqlserver://{host}:1433" 8url = server_name + ";" + "databaseName=" + database + ";encrypt=true;trustServerCertificate=true;" 9 10TABLE_TO_WRITE = '<NOME DA TABELA>' 11 12#READ TABLE 13remote_table = (spark.read 14 .format("jdbc") 15 .option("url", url) 16 .option("dbtable", TABLE_TO_WRITE) 17 .option("user", user) 18 .option("password", password) 19 .load() 20) 21 22# READ QUERY 23remote_table = (spark.read 24 .format("jdbc") 25 .option("url", url) 26 .option("query", query) 27 .option("user", user) 28 .option("password", password) 29 .load() 30) 31 32# WRITE TABLE 33df.distinct().write.format("jdbc")\ 34 .mode("overwrite")\ 35 .option("truncate","true")\ 36 .option("url", url)\ 37 .option("dbtable", TABLE_TO_WRITE)\ 38 .option("user", user)\ 39 .option("password", password) \ 40 .option("schemaCheckEnabled", "false")\ 41 .save()

ref: https://docs.databricks.com/external-data/sql-server.html