Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Free Movement of Data with Apache Arrow

Uwe L. Korn
September 26, 2018

Free Movement of Data with Apache Arrow

Die Landschaft der Big-Data-Systeme ist ständig am Wachsen. Es entstehen kontinuierlich neue Tools für Data Warehousing, Data Engineering und Machine Learning. Jedes dieser Felder hat sein eigenes Ökosystem und bevorzugte Programmiersprache. Jedoch müssen diese Bereiche alle zusammenarbeiten, um ein erfolgreiches Datenprodukt bauen und betreiben zu können. Apache Arrow setzt hier an und definiert einen Standard und Bibliotheken für den Datenaustausch, um diese System hocheffizient zu verknüpfen. Ein aktuelles Beispiel der Nutzung von Arrow ist die Anwendung in Apache Spark, um das in Scala geschriebene System mit effizienten Funktion aus Python mit Pandas erweiterbar zu machen.

Uwe L. Korn

September 26, 2018
Tweet

More Decks by Uwe L. Korn

Other Decks in Programming

Transcript

  1. Free Movement of Data with
    Apache Arrow
    Uwe L. Korn
    data2day
    26.09.2018
    1

    View Slide

  2. • Data Scientist/Engineer bei

    Blue Yonder (@BlueYonderTech)
    • Apache {Arrow, Parquet} PMC
    • Arbeite in Python, C++11 und
    SQL
    • Twitter: @xhochy
    • Mail: [email protected]
    About me
    2

    View Slide

  3. 3
    Demand Planning
    Suppliers DCs
    Customers
    Replenishment
    Truckload
    Optimization
    Staff
    Planning
    Delivery
    Schedules
    Pick
    Optimization
    First Order
    Planning
    Promotion
    Planning
    Dynamic
    Pricing
    Personalized
    Couponing
    Initial Buy
    (Online) Stores
    Replenishment
    Software für den Handel

    – mit AI

    View Slide

  4. JVM Python / Native
    4
    Big Data trifft Data Science
    trifft Serialisierung

    View Slide

  5. Warum: Data Pipelines!
    5
    • Daten sind nicht Teil einer Anwendung
    • Verschiedene Nutzung von Reporting über User
    Interaktion zu Data Science
    • enorme, inhomogene Landschaft an Tools
    • Performance ist kritisch auf Grund der Größe

    View Slide

  6. Generelles Problem
    6
    • Gute Interoperalität innerhalb eines Ökosystems
    • Oft basierend auf einem gemeinsamen Backend (z.B. NumPy)
    • Schlechte Integration zu anderen Systems
    • CSV ist oft die einzige Lösung
    • „Wir müssen reden!“
    • Kopie im RAM is ca. 10GiB/s
    • (De-)serialiserung kommt oben drauf

    View Slide

  7. Quelle: https://arrow.apache.org/img/simd.png ( https://arrow.apache.org/ )
    Columnar Data
    7

    View Slide

  8. Apache Parquet
    8

    View Slide

  9. Apache Parquet
    9
    • spaltenbasiertes Dateiformat
    • gestartet in 2012, Apache in 2013
    • Default für tabellarische Daten in Hadoop & co
    • Inzwischen auch für C++, Python, Rust, .NET, …
    • Schnell dank:
    • Encoding
    • Kompression
    • Predicate Pushdown

    View Slide

  10. Speichere in einem, lade im anderen Ökosystem…
    … aber persistiere immer dazwischen.
    10

    View Slide

  11. Zero-Copy Interaktion
    11

    View Slide

  12. Apache Arrow
    12
    • spaltenbasiertes Speichermodell
    • kein Overhead zwischen Systemen
    • Ausgelegt für moderne SIMD Prozessoren und GPUs
    • Verfügbar in: C, C++, Ruby, Go, Rust, Java, Python,
    JavaScript, Julia, R, Matlab, Lua.
    • Offener Standard

    View Slide

  13. Apache Arrow: Detail
    13
    • Beispiel String Array
    • 2 Varianten:
    • Plain: valid bitmap / offsets / values
    • Dictionary Encoding:
    • Alle vorkommenden Werte als Plain
    • Index Array für Mapping auf Werte

    View Slide

  14. Apache Arrow: Beispiel 1
    Datenabzug aus DB
    14
    • Datenbanken sind auf kleine Ergebnisse ausgerichtet

    (selbst bei großen Eingabedaten)
    • Machine Learning erfordert granulare Daten
    • CSV Export ist immer vorhanden und schnell
    • Stattdessen:
    • Turbodbc für schnelle Anbindung
    • Arrow als Datenformat auf dem Weg

    DB -> C++ -> Python / Pandas

    View Slide

  15. Apache Arrow: Beispiel 2
    PySpark
    15
    • 1 Millionen Integer von Spark nach PySpark
    • 8 MiB Daten (sehr wenig!)
    • Bis jetzt: 2.57s
    • Mit Arrow (@pandas_udf): 0.05s

    View Slide

  16. Ray

    View Slide

  17. Apache Arrow: Das Ziel
    17

    View Slide

  18. Blue Yonder GmbH
    Ohiostraße 8
    76149 Karlsruhe
    Germany
    +49 721 383117 0
    Blue Yonder Software Limited
    19 Eastbourne Terrace
    London, W2 6LG
    United Kingdom
    +44 20 3626 0360
    Blue Yonder
    Best decisions,
    delivered daily
    Blue Yonder Analytics, Inc.
    5048 Tennyson Parkway
    Suite 250
    Plano, Texas 75024
    USA
    18

    View Slide