Está en la página 1de 36

DP-203-Procesamiento de Datos

Instructor: Roger Rodriguez Samanez


Agenda

Lesson 01 – Apache Spark

Lesson 02 – DataBricks

Lesson 03 – ETL con Databricks

Lesson 04 – Arquitecturas Delta Lake

Lesson 05 – Laboratorio
Apache Spark

• Spark is a unified processing engine that can


analyze big data using SQL, machine learning,
graph processing, or real-time stream analysis

• Soporta los lenguajes:


• Scala - Apache Spark's primary language
• Python - More commonly referred to as PySpark
• R - SparkR (R on Spark)
• Java
• SQL - Closer to ANSI SQL 2003 compliance
Beneficios
Rápido
A través del almacenamiento en caché en la
memoria y la ejecución optimizada de Apto para desarrolladores
consultas, Spark puede ejecutar consultas Apache Spark es compatible de forma nativa con Java,
analíticas rápidas contra datos de cualquier Scala, R y Python, lo que le brinda una variedad de
tamaño. lenguajes para crear sus aplicaciones. Estas API se lo
ponen fácil a sus desarrolladores, porque ocultan la
complejidad del procesamiento distribuido detrás de
Múltiples cargas de trabajo
operadores simples de alto nivel que reducen
Apache Spark viene con la capacidad de
drásticamente la cantidad de código requerido.
ejecutar múltiples cargas de trabajo, incluidas
consultas interactivas, análisis en tiempo real,
aprendizaje automático y procesamiento de
gráficos. Una aplicación puede combinar varias
cargas de trabajo sin problemas.
Databricks
• Databricks es un servicio en la nube basado en
Apache Spark

• Actualmente corre sobre Azure y AWS

• Tiene las siguientes características:

• Databricks Workspace
• Databricks Workflows
• Databricks Runtime
• Databricks I/O (DBIO)
• Databricks Ser verless
• Databricks Enterprise Security (DBES)
• Atomicidad : cada declaración en una transacción (para leer, •Durabilidad : garantiza que los cambios en sus datos
escribir, actualizar o eliminar datos) se trata como una sola realizados por transacciones ejecutadas con éxito se
unidad. O se ejecuta toda la sentencia, o no se ejecuta guardarán, incluso en caso de falla del sistema.
nada. Esta propiedad evita que se produzcan daños y
pérdidas de datos si, por ejemplo, su fuente de datos de
transmisión falla a mitad de la transmisión.

•Coherencia : garantiza que las transacciones solo realicen •Aislamiento : cuando varios usuarios leen y escriben en la
cambios en las tablas de formas predefinidas y predecibles. La misma tabla a la vez, el aislamiento de sus transacciones
consistencia transaccional garantiza que la corrupción o los garantiza que las transacciones simultáneas no interfieran ni se
errores en sus datos no creen consecuencias no deseadas para afecten entre sí. Cada solicitud puede ocurrir como si
la integridad de su tabla. estuvieran ocurriendo una por una, aunque en realidad estén
ocurriendo simultáneamente.
ETLs con Databricks
Corrupt Record
Extraction Data Validation Transformation Loading Data
Handling

Connect to many data Applying structure Built-in functions of Highly effective


Validate that the data
stores: and schema to your Databricks allow you design pattern
is what you expect.
• Postgres data to transform it to handle corrupt involves loading
• SQL Server into the desired data such as missing structured data back
• Cassandra format. and incomplete to DBFS as a parquet
• Cosmos DB information. file.
• CSV, Parquet
• Many more..
The Delta
Architecture
Let’stryit instead with
ANewStandardforBuildingDataLakes

● Open FormatBased on Parquet


● Bythe creator of ApacheSpark

● With Transactions
● Using SparkAPI’s
Isthereabetterarchitecture?
λ-arch
1 λ-arch
Events 1 2 Validation
1 λ-arch Streamin 3 Reprocessing
g
Analytics 4 Updates GDPR...
2 Validation
Partitioned 5 Smal files
3 4 Scheduled to
Avoid
Modifications

5
Reprocessing
DataLake 4 UPDATE& AI&Reporting
MERGE
Bronze Silver Gold
Kinesis
Streamin
g
Analytics
CSV,
JSON,
T XT …
Dat a L ake Raw Filtered, Cleaned Business-level
Ingestion Augmented Aggregates AI&Reporting
Bronze Silver Gold
Kinesis
Streamin
g
Analytics
CSV,
JSON,
T XT …
Dat a L ake Raw Filtered, Cleaned Business-level
Ingestion Augmented Aggregates AI&Reporting
Quality

DeltaLakealowsyoutoimprovethequalityofyour
datauntil it is readyfor consumption.
Bronze Silver Gold
Kinesis
Streamin
g
Analytics
CSV,
JSON,
T XT …
Dat a L ake Raw Filtered, Cleaned Business-level
Ingestion Augmented Aggregates AI&Reporting

Rawdatawith minimal parsing


Supportslong retention(years)
Bronze Silver Gold
Kinesis
Streamin
g
Analytics
CSV,
JSON,
T XT …
Dat a L ake Raw Filtered, Cleaned Business-level
Ingestion Augmented Aggregates AI&Reporting

Intermediatedatawith somecleanupapplied.
Schemaenforcement/evolution, dataexpectation

Queryable foreasy debugging!


Bronze Silver Gold
Kinesis
Streamin
g
Analytics
CSV,
JSON,
T XT …
Dat a L ake Raw Filtered, Cleaned Business-level
Ingestion Augmented Aggregates AI&Reporting

Cleandata,readyfor consumption.
ReadwithSpark,Presto,Glue*
*ComingSoon
Bronze Silver Gold
Kinesis
Streamin
g
Analytics
CSV,
JSON,
T XT …
Dat a L ake Raw Filtered, Cleaned Business-level
Ingestion Augmented Aggregates AI&Reporting

• Ful ACIDTransactions
• Open Source (ApacheLicense)
• Powered by
Bronze Silver Gold
Kinesis
Streamin
g
Analytics
CSV,
JSON,
T XT …
Dat a L ake Raw Filtered, Cleaned Business-level
Ingestion Augmented Aggregates AI&Reporting

Streamsmovedatathroughthe DeltaLake
• Low-latency ormanualy triggered
• Eliminates managementof schedulesandjobs
OVERWRITE

MERGE
INSERT DELETE
Bronze Silver Gold
Kinesis
Streamin
g
Analytics
CSV,
JSON,
T XT …
Dat a L ake Raw Filtered, Cleaned Business-level
UPDATE Ingestion Augmented Aggregates AI&Reporting

Delta Lake also supports batch jobs


andstandardDMLwhile streamsrun
• Retention
• Corrections
• GDPR
DELETE DELETE
Bronze Silver Gold
Kinesis
Streamin
g
Analytics
CSV,
JSON,
T XT …
Dat a L ake Raw Filtered, Cleaned Business-level
Ingestion Augmented Aggregates AI&Reporting

Easytorecomputewhenbusinesslogicchanges:
• Cleartables
• Restartstreams
How doIuse ?
GetStarted with Delta using SparkAPIs
Add SparkPackage Maven
pyspark --packages i o . d e l t a : d e l t a - c o r e _ 2 . 1 2 : 0 . 1 .0 <dependency>
<groupId>io.delta</groupId>
bin/ spark - shell --packages io. delta: delta - core_ 2 . 12 : 0 . 1 .0 <artifactId>delta-core_2.12</artifactId>
<version>0.1.0</version>
</dependency>

Instead of parquet... … simply say delta


dataframe dataframe
.write .write
.format("parquet") .format("delta")
.save("/data") .save("/data")
Howdoes work?
Delta OnDisk
my_table/
TransactionLog _delta_log/
TableVersions 00000.json
00001.json
(Optional)PartitionDirectories date=2019-01-01/
DataFiles file-1.parquet
Log StructuredStorage
Changes to the table Add 1.parquet
are stored as 000000.json Add 2.parquet
ordered, atomicunits 000001.json
caled commits Remove 1.parquet

Remove 2.parquet
Add 3.parquet
Handling MassiveMetadata
Large tables can have milions of files in them! How do we scale
the metadata?Use Sparkfor scaling!
Transaction log

Add 1.parquet …
Checkpoint 0009.json
Add 2.parquet
0010.json
Remove 1.parquet checkpoint-1.parquet
Remove 2.parquet 0011.json

Add 3.parquet
Delta Lake ensures datareliability

Batch
Parquet Files
High Quality &Reliable Data
Streaming
always ready foranalytics
Updates/Deletes
Transactional
Log

Key Features ● ACIDTransactions /ful DML ● Unified Batch& Streaming


● Dataquality ● Time Travel/DataSnapshots
© Copyright Microsoft Corporation. All rights reserved.
Gracias

También podría gustarte