Using databricks as an analysis platform Anup Segu
Agenda Extending databricks to provide a robust analytics platform Why a platform? What is in our platform?
Feedback Your feedback is important to us. Don’t forget to rate and review the sessions.
YipitData’s Platform
YipitData Answers Key Investor Questions ▪ 70+ research products covering U.S. and international companies ▪ Email reports, excel files, and data downloads ▪ Transaction data, web data, app data, targeted interviews, and adding more ▪ Clients include over 200 investment funds and fortune 500 companies ▪ 53 data analysts and 3 data engineers ▪ 22 engineers total ▪ We are rapidly growing and hiring!
About Me ▪ Senior Software Engineer ▪ Manage platform for ETL workloads ▪ Based out of NYC ▪ linkedin.com/in/anupsegu
We Want Analysts To Own The Product Data Collection Data Exploration ETL Workflows Report Generation www SELECT * FROM ...
EngineersAnalysts Providing a Platform Answering Questions
Python Library Inside Notebooks
Ingesting data
Wide range of table sizes and schemas 1 PB Compressed Parquet 60 K Tables 1.7 K Databases
Readypipe: From URLs To Parquet ▪ Repeatedly capture a snapshot of the website ▪ Websites frequently change ▪ Makes data available quickly for analysis
Glue Metastore Streaming As JSON Is Great ▪ Append only data in S3 ▪ We don’t know the schema ahead of time ▪ Only flat column types s3://{json_bucket}/{project_name} /{table}/... JSON Bucket Parquet Bucket Kinesis Firehose
Parquet Makes Data “Queryable” ▪ Create or update databases, tables, and schemas as needed ▪ Partitioned by the date of ingestion ▪ Spark cluster subscribed to write events s3://{parquet_bucket}/{project_name} /{table}/dt={date}... JSON Bucket Kinesis Firehose Glue Metastore Parquet Bucket
Compaction = Greater Performance ▪ Insert files into new S3 locations ▪ Update partitions in Glue ▪ Pick appropriate column lengths for optimal file counts s3://{parquet_bucket}/{project_name} /{table}/compacted/dt={date}... JSON Bucket Kinesis Firehose Glue Metastore Parquet Bucket
With 3rd Party Data, We Strive for Uniformity Various File Formats Permissions Challenges Data Lineage Data Refreshes 403 Access Denied
Databricks Helps Manage 3rd Party Data ▪ Upload files and convert to parquet with additional metadata ▪ Configure data access by assuming IAM roles within notebooks
Table Utilities
Table: Database + Name + Data
Table Hygiene Pays Off Validate table naming conventions Keep storage layer organized Maintain prior versions of tables Automate table maintenance
However, Our Team Is Focused On Analysis so best practices are built into “create_table”
Cluster Management
Wide Range Of Options For Spark Clusters Hardware Permissions Spark Configuration Driver instance Metastore Runtime Worker instances S3 access Spark properties EBS Volumes IAM Roles Environment Variables
Wide Range Of Options For Spark Clusters Hardware Permissions Spark Configuration Driver instance Metastore Runtime Worker instances S3 access Spark properties EBS Volumes IAM Roles Environment Variables
T-Shirt Sizes For Clusters ▪ 3 r5.xlarge instances ▪ Warm instance pool for fast starts ▪ 10 r5.xlarge instances ▪ Larger EBS volumes available if needed “MEDIUM”“SMALL” ▪ 30 r5.xlarge instances Larger EBS volumes for heavy workloads “LARGE” Standard IAM Roles, Metastore, S3 access, and Environment Variables
Launch Spark Jobs With Ease
Names Map To Databricks Configurations
Databricks Does The Heavy Lifting ▪ Provisions compute resources via a REST API ▪ Scales instances for cluster load ▪ Applies a wide range of spark optimizations
ETL Workflow Automation
Airflow Is Our Preferred ETL Tool
Airflow Is Our Preferred ETL Tool Requires someone to manage this code
We use the databricks API to construct DAGs programmatically +
1 DAG = 1 Folder, 1 Task = 1 Notebook
Templated Notebooks For DAGs /folder - commands - notebook_a - notebook_b - notebook_c
Translate Notebooks Into DAG files /api/2.0/workspace/list /api/2.0/workspace/export
Automatically Create Workflows ▪ Pipelines are deployed without engineers ▪ Robust logging and error handling ▪ Easy to modify DAGs ▪ All happens within databricks Task A Task B Task C
Platform Visibility
Tailored Monitoring Solutions
Standardize Logs As Data
Visualize Logs In Notebooks
A Platform Invites New Solutions ▪ Establish standard queries and notebooks ▪ Trigger one DAG from one another ▪ Trigger reporting processes after ETL jobs
Thank You Interested in working with us? We are hiring! yipitdata.com/careers
Feedback Your feedback is important to us. Don’t forget to rate and review the sessions.
Appendix I: Compaction Code
Compacting Partitions
Compacting Partitions (cont.)
Compacting Partitions (cont.)
Appendix II: Table Creation Code
Capturing metadata with source data
Creating a table
Creating a table (cont.)
Creating a table (cont.)
Creating a table (cont.)
Appendix III: Databricks Jobs Code
Create a Databricks Job
Create a Databricks Job (cont.)
Appendix IV: Airflow Code
Automatic DAG Creation
Automatic DAG Creation (cont.)
Automatic DAG Creation (cont.)
Automatic DAG Creation (cont.)
Using Databricks as an Analysis Platform

Using Databricks as an Analysis Platform