Chi è un ingegnere di dati e come diventare un ingegnere di dati?
Una semplice guida su come cavalcare le ondate di Data Engineering e non lasciarti trascinare.
Sembra che oggigiorno tutti vogliano diventare un Data Scientist. Ma per quanto riguarda l’ingegneria dei dati? Nel suo cuore, è un ibrido di sorta tra un analista di dati e uno scienziato di dati; L’ingegnere dati è in genere responsabile della gestione dei flussi di lavoro dei dati, delle pipeline e dei processi ETL. Alla luce di queste importanti funzioni, è la parola d’ordine più calda al giorno d’oggi che sta attivamente guadagnando slancio.
Alto salario e grande richiesta: questa è solo una piccola parte di ciò che rende questo lavoro caldo, caldo, caldo! Se vuoi essere un tale eroe, non è mai troppo tardi per iniziare ad imparare. In questo post, ho raccolto tutte le informazioni necessarie per aiutarti a muovere i primi passi.
Quindi iniziamo!
Che cos’è l’ingegneria dei dati?
Francamente, non esiste una spiegazione migliore di questa:
“Uno scienziato può scoprire una nuova stella, ma non può crearne una. Dovrebbe chiedere a un ingegnere di farlo per lui. “
–Gordon Lindsay Glegg
Quindi, il ruolo del Data Engineer è davvero prezioso.
Dal titolo deriva che l’ingegneria dei dati è associata ai dati, vale a dire la loro consegna, conservazione ed elaborazione. Di conseguenza, il compito principale degli ingegneri è fornire un’infrastruttura affidabile per i dati. Se osserviamo la Gerarchia dei bisogni dell’IA, l’ingegneria dei dati compie le prime 2–3 fasi: raccolta, spostamento e archiviazione, preparazione dei dati.
Pertanto, per qualsiasi organizzazione basata sui dati, è fondamentale impiegare un ingegnere dei dati per essere al top.
Cosa fa un ingegnere di dati?
Con l’avvento dei “big data”, l’area di responsabilità è cambiata radicalmente. Se prima questi esperti scrivevano grandi query SQL e superavano i dati utilizzando strumenti come Informatica ETL, Pentaho ETL, Talend, ora i requisiti per i data engineer sono avanzati.
La maggior parte delle aziende con posizioni aperte per il ruolo di Ingegnere dati hanno i seguenti requisiti:
Ottima conoscenza di SQL e Python
Esperienza con piattaforme cloud, in particolare Amazon Web Services
Conoscenza preferita di Java / Scala
Buona conoscenza dei database SQL e NoSQL (modellizzazione dei dati, data warehousing)
Ricorda, è solo essenziale. Da questo elenco, possiamo presumere che i data engineer siano specialisti nel campo dell’ingegneria del software e dello sviluppo back-end.
Ad esempio, se un’azienda inizia a generare una grande quantità di dati da diverse fonti, la tua attività, in quanto Ingegnere di dati, è organizzare la raccolta di informazioni, l’elaborazione e l’archiviazione.
L’elenco degli strumenti utilizzati in questo caso può variare, tutto dipende dal volume di questi dati, dalla velocità del loro arrivo ed eterogeneità. La maggior parte delle aziende non dispone di grandi quantità di dati, pertanto, in quanto repository centralizzato, il cosiddetto Data Warehouse, è possibile utilizzare il database SQL (PostgreSQL, MySQL, ecc.) Con un numero limitato di script che indirizzano i dati nel repository .
I giganti IT come Google, Amazon, Facebook o Dropbox hanno requisiti più elevati:
Conoscenza di Python, Java o Scala
Esperienza con i big data: Hadoop, Spark, Kafka
Conoscenza di algoritmi e strutture dati
Comprensione delle basi dei sistemi distribuiti
L’esperienza con strumenti di visualizzazione dei dati come Tableau o ElasticSearch sarà un grande vantaggio
Cioè, c’è chiaramente un pregiudizio nei big data, vale a dire la loro elaborazione sotto carichi elevati. Queste aziende hanno aumentato i requisiti per la resilienza del sistema.
Data Engineers vs. Scienziati dei dati
Ok, quella era una spiegazione semplice e divertente (niente di personale), ma la verità è che tutto è molto più complicato.
Dovresti sapere prima che c’è davvero molta ambiguità tra scienza dei dati e ruoli e competenze dell’ingegnere dei dati. Quindi, puoi facilmente confonderti su quali competenze sono essenzialmente necessarie per essere un ingegnere di dati di successo. Naturalmente, ci sono alcune abilità che si sovrappongono per entrambi i ruoli. Ma c’è anche un sacco di abilità diametralmente diverse.
La scienza dei dati è una cosa reale, ma il mondo si sta muovendo verso un mondo di scienza dei dati funzionale in cui i professionisti possono fare le proprie analisi. Per abilitare le pipeline di dati e le strutture di dati integrate sono necessari ingegneri di dati, più che esperti di dati.
Un ingegnere di dati è più richiesto dei data scientist?
- Sì, perché prima di poter preparare una torta di carote devi prima raccogliere, pulire e conservare le carote!
Data Engineer comprende la programmazione meglio di qualsiasi scienziato di dati, ma quando si tratta di statistiche, tutto è esattamente il contrario.
Ma qui il vantaggio dell’ingegnere dei dati:
senza di lui, il valore di questo prototipo di modello, il più delle volte costituito da un pezzo di codice in un file Python di terribile qualità, proveniente da uno scienziato di dati e che in qualche modo dà risultati tende a zero.
Senza l’ingegnere dei dati, questo codice non diventerà mai un progetto e nessun problema aziendale verrà risolto in modo efficace. Un ingegnere dei dati sta cercando di trasformarlo in un prodotto.
Cose essenziali L’ingegnere dei dati dovrebbe sapere
Quindi, se questo lavoro ti illumina e sei pieno di entusiasmo, puoi impararlo, puoi padroneggiare tutte le competenze necessarie e diventare una vera rockstar nell’ingegneria dei dati. E sì, puoi farlo anche senza programmazione o altri background tecnologici. È difficile, ma è possibile!
Quali sono i primi passi?
Dovresti avere una comprensione generale di ciò che è cosa.
Innanzitutto, la Data Engineering è principalmente legata all’informatica. Per essere più specifici, è necessario avere una comprensione di algoritmi e strutture dati efficienti. In secondo luogo, poiché gli ingegneri dei dati si occupano dei dati, è necessaria una comprensione del funzionamento dei database e delle strutture sottostanti.
Ad esempio, i soliti database SQL B-tree si basano sulla struttura B-Tree e nei moderni repository distribuiti LSM-Tree e altre modifiche alla tabella hash.
- Questi passaggi sono basati su un ottimo articolo di Adil Khashtamov . Quindi, se conosci il russo, ti preghiamo di sostenere questo scrittore e di leggere anche il suo post .
- Algoritmi e strutture dati
L’uso della giusta struttura di dati può migliorare drasticamente le prestazioni di un algoritmo. Idealmente, dovremmo imparare tutti strutture di dati e algoritmi nelle nostre scuole, ma raramente è mai coperto. Comunque, non è mai troppo tardi.
Quindi, ecco i miei corsi gratuiti preferiti per imparare strutture di dati e algoritmi:
Strutture dati facili da avanzate (Udemy)
Algorithms, Part I (Coursera)
Algorithms, Part II (Coursera)
Inoltre, non dimenticare il classico lavoro sugli algoritmi di Thomas Cormen – Introduzione agli algoritmi . Questo è il riferimento perfetto quando è necessario aggiornare la memoria.
Per migliorare le tue abilità, usa Leetcode .
Puoi anche immergerti nel mondo del database grazie a fantastici video della Carnegie Mellon University su Youtube:
Introduzione ai sistemi di database
Sistemi di database avanzati - Impara l’SQL
Tutta la nostra vita è data. E al fine di estrarre questi dati dal database, è necessario “parlare” con esso nella stessa lingua.
SQL (Structured Query Language) è la lingua franca nell’area dati. Indipendentemente da ciò che qualcuno dice, SQL vive, è vivo e vivrà per molto tempo.
Se sei stato in sviluppo per molto tempo, probabilmente avrai notato che le voci sulla morte imminente di SQL appaiono periodicamente. Il linguaggio è stato sviluppato nei primi anni ’70 ed è ancora molto popolare tra analisti, sviluppatori e solo appassionati.
Non c’è nulla a che fare senza la conoscenza di SQL nell’ingegneria dei dati poiché dovrai inevitabilmente costruire query per estrarre i dati. Tutti i moderni big data warehouse supportano SQL:
Amazon Redshift
HP Vertica
Oracolo
server SQL
…e molti altri.
Per analizzare un ampio strato di dati archiviati in sistemi distribuiti come HDFS, sono stati inventati motori SQL: Apache Hive, Impala, ecc. Vedi, non andare da nessuna parte.
Come imparare l’SQL? Fallo solo in pratica.
A tal fine, consiglierei di fare conoscenza con un eccellente tutorial, che è comunque gratuito, da Mode Analytics .
SQL intermedio
Unione di dati in SQL
Una caratteristica distintiva di questi corsi è la presenza di un ambiente interattivo in cui è possibile scrivere ed eseguire query SQL direttamente nel browser. La risorsa SQL moderna non sarà superflua. E puoi applicare questa conoscenza sulle attività Leetcode nella sezione Database. - Programmazione in Python e Java / Scala
Perché vale la pena imparare il linguaggio di programmazione Python, ho già scritto nell’articolo Python vs R. La scelta del miglior strumento per AI, ML e Data Science . Per quanto riguarda Java e Scala, la maggior parte degli strumenti per l’archiviazione e l’elaborazione di enormi quantità di dati sono scritti in queste lingue. Per esempio:
Apache Kafka (Scala)
Hadoop, HDFS (Java)
Apache Spark (Scala)
Apache Cassandra (Java)
HBase (Java)
Apache Hive (Java)
Per capire come funzionano questi strumenti è necessario conoscere le lingue in cui sono scritti. L’approccio funzionale di Scala consente di risolvere efficacemente i problemi di elaborazione parallela dei dati. Python, sfortunatamente, non può vantare velocità ed elaborazione parallela. Nel complesso, la conoscenza di diversi linguaggi e paradigmi di programmazione ha un buon effetto sull’ampiezza degli approcci alla risoluzione dei problemi.
Per immergerti nella lingua Scala, puoi leggere Programmazione in Scala dall’autore della lingua. Inoltre, la società Twitter ha pubblicato una buona guida introduttiva – Scala School .
Per quanto riguarda Python, considero Fluent Python come il miglior libro di livello intermedio. - Strumenti per i Big Data
Ecco un elenco degli strumenti più popolari nel mondo dei big data:
Apache Spark
Apache Kafka
Apache Hadoop (HDFS, HBase, Hive)
Apache Cassandra
Maggiori informazioni sui blocchi di dati di big data che puoi trovare in questo fantastico ambiente interattivo . Gli strumenti più popolari sono Spark e Kafka. Vale sicuramente la pena esplorare, preferibilmente comprendendo come funzionano dall’interno. Jay Kreps (coautore Kafka) nel 2013 ha pubblicato un’opera monumentale di The Log: Ciò che ogni ingegnere del software dovrebbe sapere sull’astrazione unificante dei dati in tempo reale , le idee chiave di questo boob, tra l’altro, sono state utilizzate per la creazione di Apache Kafka .
Un’introduzione a Hadoop può essere una guida completa a Mastering Hadoop (gratuita).
La guida più completa di Apache Spark per me è Spark: The Definitive Guide . - Piattaforme cloud
La conoscenza di almeno una piattaforma cloud è nei requisiti di nesting per la posizione di Data Engineer. I datori di lavoro preferiscono Amazon Web Services, in secondo luogo è la Google Cloud Platform e termina con i primi tre leader di Microsoft Azure.
Dovresti essere ben orientato in Amazon EC2, AWS Lambda, Amazon S3, DynamoDB.
- Sistemi distribuiti
Lavorare con i big data implica la presenza di cluster di computer funzionanti in modo indipendente, la comunicazione tra loro avviene attraverso la rete. Maggiore è il cluster, maggiore è la probabilità di errore dei suoi nodi membri. Per diventare un esperto di dati interessanti, è necessario comprendere i problemi e le soluzioni esistenti per i sistemi distribuiti. Questa zona è antica e complessa.
Andrew Tanenbaum è considerato un pioniere in questo regno. Per coloro che non hanno paura della teoria, raccomando il suo libro Distributed Systems , per i principianti può sembrare difficile, ma ti aiuterà davvero a migliorare le tue abilità.
Considero la progettazione di applicazioni ad alta intensità di dati da Martin Kleppmann il miglior libro introduttivo. A proposito, Martin ha un blog meraviglioso . Il suo lavoro contribuirà a sistematizzare le conoscenze sulla costruzione di una moderna infrastruttura per l’archiviazione e l’elaborazione dei big data.
Per coloro a cui piace guardare video, c’è un corso su Sistemi computerizzati distribuiti su Youtube. - Pipeline di dati
Le pipeline di dati sono qualcosa di cui non puoi vivere senza come ingegnere dei dati.
Gran parte del tempo ingegnere di dati costruisce un cosiddetto. La data della pipeline, ovvero, costruisce il processo di consegna dei dati da un luogo a un altro. Questi possono essere script personalizzati che vanno all’API del servizio esterno o creano una query SQL, arricchiscono i dati e li inseriscono in un archivio centralizzato (data warehouse) o in un archivio di dati non strutturati (data lake).
Riassumendo: l’elenco di controllo di Ultimate Data Engineer
Riprendendo, comprendi bene:
Acquisire una buona conoscenza dei sistemi di informazione;
Ingegneria del software (Agile, DevOps, Tecniche di progettazione, SOA)
Sistemi distribuiti e programmazione parallela;
Fondamenti del database: pianificazione, progettazione, funzionamento e risoluzione dei problemi;
Progettazione di esperimenti – Test A / B per mettere l’affidabilità, le prestazioni dei sistemi “Proof of Concept”, così come progettare buone linee di flusso per fornire buone soluzioni “al volo”
Questi sono alcuni dei requisiti per diventare un ingegnere dei dati, quindi, tanto quanto il tuo studio e può comprendere sistemi di dati, sistemi di informazione, distribuzione / distribuzione / integrazione continua, linguaggi di programmazione e altri argomenti sull’informatica (non tutte le aree di dominio ofc) , meglio raccogli il tuo skillset.
E infine, l’ultima ma importantissima cosa che voglio dire.
Il viaggio per diventare Data Engineering non è così facile come potrebbe sembrare. È spietato, frustrante e devi essere pronto per questo. Alcuni momenti di questo viaggio ti spingeranno a gettare tutto nell’asciugamano. Ma questo è un vero processo di lavoro e apprendimento.
Basta non ricoprire di zucchero fin dall’inizio. Il punto centrale del viaggio è imparare il più possibile ed essere pronti a nuove sfide.