WIFI SSID: SparkAISummit | Password: UnifiedAnalytics
Patrick Pisciuneri & Doug Balog, Target Apache Spark Data Validation #UnifiedAnalytics #SparkAISummit
Outline • Introductions • Motivation • Data Validator • Open Source • Future Work • Conclusions 3#UnifiedAnalytics #SparkAISummit
Introduction Patrick Pisciuneri Patrick is a Data Scientist for Target. He received his PhD in Mechanical Engineering from the University of Pittsburgh in 2013. His research involved the intersection of high- performance computing and the simulation of turbulent reacting flows. In 2015 he joined Target as a data scientist where he has worked on product and ad recommendations. Doug is a Data Engineer for Target. He develops Machine Learning infrastructure for Target in Pittsburgh, PA. He joined Target in 2014 and is currently a Principal Data Engineer. He has a BS in Computer Science from University of Pittsburgh. 4#UnifiedAnalytics #SparkAISummit Doug Balog
Introduction Target • 1,845 stores in the United States • 39 distribution centers in the United States • 350,000+ team members worldwide • Online business at target.com • Global offices in China, Hong Kong and India corporate.target.com/ 5#UnifiedAnalytics #SparkAISummit
Motivation • Understand data • Catch errors/anomalies early in pipelines • Promote best practices for data management • Easy to adopt – language agnostic interface • Efficient on large datasets and distributed systems 6#UnifiedAnalytics #SparkAISummit
Motivation References 1. TFX: A TensorFlow-Based Production-Scale Machine Learning Platform, KDD 2017 2. Hidden Technical Debt in Machine Learning, NIPS 2015 3. Methodology for Data Validation 1.0, Eurostat – CROS, 2016 4. Extending Apache Spark APIs Without Going Near Spark Source or a Compiler, Spark + AI Summit, 2018 7#UnifiedAnalytics #SparkAISummit
Data Validator introducing 8#UnifiedAnalytics #SparkAISummit
Features • Configuration • Validators • Reporting & Notification • Profiling 9#UnifiedAnalytics #SparkAISummit
Flow Diagram 10#UnifiedAnalytics #SparkAISummit Events Reporting Parse Config Resolve Variables Variable Substitution Check Config Validation Checks
Configuration • User creates a configuration file (yaml) 1. Variables 2. Reporting settings 3. Notification settings 4. Validation checks 11#UnifiedAnalytics #SparkAISummit
Configuration - Variables • Set the value of a variable specified by the name value 1. Simple substitution 2. Environment variable substitution 3. Shell substitution • First line of stdout 4. SQL substitution • First column of first row 12#UnifiedAnalytics #SparkAISummit
Configuration – Report Settings • Event report – Specify path and filename • local:// • hdfs:// • append – will overwrite existing file if false – Pipe event report to another program • ignoreError – mark data validator as failed if pipe command fails 13#UnifiedAnalytics #SparkAISummit
Configuration – Notification Settings • Send email with status of validation checks 14#UnifiedAnalytics #SparkAISummit
Configuration – Validation Checks • Specify the checks we want to run on a data asset • Support: – Hive tables – Orc files – Parquet files • Any number of checks on any number of columns • Specify condition to filter asset – Useful when applied to partition column 15#UnifiedAnalytics #SparkAISummit
ValidatorBase 16#UnifiedAnalytics #SparkAISummit
RowBased 17#UnifiedAnalytics #SparkAISummit
ColumnBased 18#UnifiedAnalytics #SparkAISummit
Example • Census (1994) Income Data Set • Learning task: predict whether income exceeds 50k http://archive.ics.uci.edu/ml/datasets/Census+Income 19#UnifiedAnalytics #SparkAISummit
Example Config Schema 20#UnifiedAnalytics #SparkAISummit
Explain Config 21#UnifiedAnalytics #SparkAISummit * formatted in text editor for clarity
Reporting • Event log – Logs configuration settings – Logs variable substitutions – Logs runtime environment and statistics – Logs checks run and status – It’s extensive! 22#UnifiedAnalytics #SparkAISummit
Report Config rowCount 23#UnifiedAnalytics #SparkAISummit
Report Config negativeCheck 24#UnifiedAnalytics #SparkAISummit
Report Config nullCheck 25#UnifiedAnalytics #SparkAISummit
Profiling Config 26#UnifiedAnalytics #SparkAISummit
Profiling Config 27#UnifiedAnalytics #SparkAISummit
Profiling Implementation 28#UnifiedAnalytics #SparkAISummit • Catalyst aggregate expressions • Min • Max • Average • Count • Stddev • UDAF • histogram
Profiling • Parse / pipe output from report to tool for visualization • Facets Overview 29#UnifiedAnalytics #SparkAISummit
Open Source • Apache License, Version 2.0 • https://github.com/target/data-validator 30#UnifiedAnalytics #SparkAISummit
Future Work • Add more validators • Leverage column statistics for default configuration generation • HDP 3 and Spark 2.4+ • Anomaly detection • Distribution shift • Ideas and input from community 31#UnifiedAnalytics #SparkAISummit
Conclusions • Adoption • Understand data • Catch errors/anomalies early in pipelines • Promote best practices for data management • Easy to adopt – language agnostic interface • Efficient on large datasets and distributed systems 32#UnifiedAnalytics #SparkAISummit
Thank you! • Questions? • We are hiring: – jobs.target.com – Search “lead data scientist”, “lead data engineer” • Check out: Parallelizing with Apache Spark in Unexpected Ways @ 2:40 PM by Anna Holschuh 33#UnifiedAnalytics #SparkAISummit
DON’T FORGET TO RATE AND REVIEW THE SESSIONS SEARCH SPARK + AI SUMMIT

Apache Spark Data Validation