Najlepšie pratices na prístup k veľkým údajov v Azure Databricks s R

0

Otázka

Nové v Azure a DatabricksSnažím sa pristupovať veľký súbor údajov, na ktorých by som chcel spustiť R procesu (napísané v data.table a ktorá vedie aj lokálne).

Nie som si pohodlné s právom podmienky, alebo ako celý Azure prostredia funguje, ale teraz my údajov je prítomný v 3 formátoch :

  • tabuľka
  • paquet
  • csv

Prvý pokus (a najlogickejším pre mňa) : klasický fread na súbory csv. Na malé súbory, je všetko v poriadku. Na "veľké" súbory (3Go), trvá mnoho, mnoho minút, zatiaľ čo lokálne, trvá len niekoľko sekúnd.

enter image description here

Prečo je to oveľa dlhšie ako lokálne ?

Druhý pokus s SparkR na súbory csv a collect() ak chcete pracovať s data.table enter image description here

Ale collect() vráti chybu : enter image description here

Je tam niečo, čo môžem robiť, ak chcete nastaviť toto ?

Tretí pokus : rovnaké ako vyššie na delta súbory s rovnakým typ chyby

enter image description here

Štvrtý pokus : SQL vyžiadanie z SparkR ale collect ešte vrátiť tú istú chybu

enter image description here

Je jeden z mojich pokusov lepšie ako iné ? Som na správnej ceste ? Som niečo chýba ?

Akúkoľvek pomoc alebo radu bude veľmi užitočné.

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

Najlepšiu odpoveď

0

O nakladanie z DBFS je objekt skladovanie v cloud nie lokálneho úložiska, takže čas načítania prirodzene bude oveľa dlhšie.

Pokiaľ ide chyba, ktorú môžete upraviť Iskra config, ale nie je odporúčané, ako sa môžete dostať von z pamäte chyba:

spark.driver.maxResultSize <X>g

Môžete nastaviť v klastra iskra config enter image description here

Najlepším riešením je použiť viac inštancií (takže tam bude automaticky viacerých oblastí - tento limit sa vzťahuje na oblasť, stupňa RAM veľkosť pamäte je tiež dôležité, ale lepšie zvyčajne stačí pridať viac inštancií rozsahu horizontálne). Povoliť automatické škálovanie sa odporúča v prípade veľkého súboru údajov.

Prosím, nepoužívajte zbierať() ako to číta všetky vaše dataframe na vodiča na objekt tak to nebude fungovať. Vo všeobecnosti táto funkcia nie je odporúčané aj pre menšie súbory dát. Ak chcete diagnostikovať váš dataframe prosím, použite funkcie, ako je .prvý() alebo .zobraziť s limitom.

2021-11-22 13:04:06

Vďaka za odpoveď, je to trochu jasnejšie. Ale ako nový používateľ tohto prostredia, nechápem všetko :) Ako si môžem nastaviť Iskra config napríklad ? Ako môžem použiť viac inštancií ? (Máte pravdu, sú dáta v cloude. Môj klaster má 252Go a 72 jadrá).
Discus23

wow, tento klaster je už dosť veľká. Budem aktualizovať moja odpoveď s viac detailov v priebehu niekoľkých hodín. Prosím, nepoužívajte zbierať() ako to číta všetky vaše dataframe na vodiča na objekt tak to nebude fungovať. Vo všeobecnosti táto funkcia nie je odporúčané aj pre menšie súbory dát. Ak chcete diagnoze vaše dataframe prosím, použite funkcie, ako je .prvý() .zobraziť s limitom.
Hubert Dudek

Až do teraz, nenašiel som lepší spôsob, ako collect() ak chcete spustiť môj "miestne" skript napísaný v data.table... Nemôžem sa dočkať, až si váš aktualizácie !
Discus23

ale čo presne chcete dosiahnuť? skúste displej(df) aj
Hubert Dudek

Musím spustiť celý skript, ktorý som napísal v data.table. Ale myslím, že sa budem musieť prepísať to v sparkr, vpravo ? Ale zdá sa, že zložitejšie sa mi, ako to znie. Bol som snažia vytvoriť nový stĺpec dlhší čas pomocou strsplit na ďalší stĺpec bez úspechu...
Discus23

V iných jazykoch

Táto stránka je v iných jazykoch

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