2016-04-10 11 views
0

las ich mehrere Tabellen auf den gleichen DatenrahmenLesen Sie mehrere Tabellen auf den gleichen Datenrahmen

i = 0 
while (condition): 
     dfMoreData = sqlContext.read.parquet("data" + i + ".parquet") 
     # process dfMoreData 
     i = i + 1 

I Ausnahmen stoßen in Bezug auf nicht genügend Arbeitsspeicher soll und wie ich klar dfMoreData nach jeder Iteration?

+1

Entschuldigung, aber dieser Ansatz ist seit dem Start falsch. Weil "dfMoreData" nur in diesem 'while' Bereich existiert. –

Antwort

0

den Code zu beheben, die die unveränderlichen Werte für jede Sammlung nicht ist zuweisen, ist ein Weg, regex oder Pfadfilter

sqlContext.read.parquet("data*.parquet"); 

reduzieren Sie Ihren Datenrahmen mit UnionAll

val df = (1 to 10) // assuming filenames are 1 to 10 
    .map("data" + _ + ".parquet") 
    .map(sqlContext.read.parquet(_)) 
    .reduce(_ unionAll _) 

Für aus dem Speicher zu verwenden, Fehler, ich glaube, der Cluster muss genügend Speicher haben, um die Daten zu laden. Danach können Sie versuchen, mit MEMORY_AND_DISK Option fortzufahren und den Rest erledigen.

+0

@Yakov, wenn dies Ihre Frage beantwortet, können Sie es akzeptieren? – Ashish

Verwandte Themen