Migliori pratiche per l'accesso di dati di grandi dimensioni in Azure Databricks con R

0

Domanda

Di nuovo in Azure e DatabricksSto cercando di accedere a un ampio set di dati, su cui vorrei eseguire un processo di R (scritto in data.table e che funziona bene a livello locale).

Io non sono confortevoli, con i termini giusti o come l'intero Azure ambiente funziona, ma per ora, i miei dati è presente in 3 formati :

  • tabella
  • paquet
  • csv

Primo tentativo (e più logico per me) : un classico fread nel file csv. Su file di piccole dimensioni, tutto è bene. Sul 'big' (che 3Go), ci vogliono molti, molti minuti, mentre a livello locale, che richiede solo una manciata di secondi.

enter image description here

Perché è molto di più a livello locale ?

Secondo tentativo con SparkR sui file csv e collect() per lavorare con data.table enter image description here

Ma collect() restituisce un errore : enter image description here

C'è qualcosa che posso fare per installare questo ?

Terzo tentativo : come sopra delta file, con lo stesso tipo di errore

enter image description here

Quarto tentativo : SQL richiesta SparkR ma collect ancora restituito lo stesso errore

enter image description here

È uno dei miei tentativi di meglio di un altro ? Io sono sulla strada giusta ? Mi manca qualcosa ?

Qualsiasi aiuto o consiglio sarà molto utile.

azure data.table databricks r
2021-11-22 10:39:01
1

Migliore risposta

0

Per quanto riguarda il caricamento di DBFS è oggetto di archiviazione in cloud non locale deposito quindi, tempo di caricamento, naturalmente, sarà molto più lungo.

In materia di errore, è possibile regolare la Scintilla config, ma non è raccomandato, come si può ottenere errore di memoria:

spark.driver.maxResultSize <X>g

Si può regolare in cluster scintilla config enter image description here

La soluzione migliore è quella di utilizzare più istanze (quindi non ci sarà automaticamente più partizioni - questo limite si applica per ogni partizione, istanza di RAM dimensione della memoria è anche importante, ma meglio di solito basta aggiungere più istanze di scala orizzontale). Attivare la funzione di auto-scaling è consigliata in caso di grandi set di dati.

Si prega di non utilizzare raccogliere() come si legge tutto il tuo dataframe sul driver per oggetto così non funziona. Generalmente questa funzione non è raccomandato anche per i più piccoli set di dati. Se si desidera diagnosticare il dataframe, si prega di utilizzare funzioni come .il primo() o .spettacolo con il limite.

2021-11-22 13:04:06

Grazie per la tua risposta, è un po ' più chiaro. Ma, come un nuovo utente di questo ambiente, non capisco tutto :) Come posso regolare la Scintilla config per esempio ? Come posso utilizzare più istanze ? (Hai ragione, i dati nel cloud. Il mio cluster ha 252Go e 72 core).
Discus23

wow questo cluster è già abbastanza grande. Voglio aggiornare la mia risposta con maggiori dettagli in poche ore. Si prega di non utilizzare raccogliere() come si legge tutto il tuo dataframe sul driver per oggetto così non funziona. Generalmente questa funzione non è raccomandato anche per i più piccoli set di dati. Se si desidera diagnoze il dataframe, si prega di utilizzare funzioni come .il primo() .spettacolo con il limite.
Hubert Dudek

Fino ad ora, non ho trovato un modo migliore collect() per eseguire il mio "locale" script scritto in data.table... Non vedo l'ora di leggere il tuo aggiornamento !
Discus23

ma, esattamente, cosa vuoi ottenere? tenta di visualizzazione(df) anche
Hubert Dudek

Ho bisogno di eseguire un intero script che ho scritto in data.table. Ma penso che dovrò riscrivere in sparkr, giusto ? Ma mi sembra più complesso a me di quanto non sembri. Ho cercato di creare una nuova colonna per lungo tempo in uso strsplit su un'altra colonna senza successo...
Discus23

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................