2016-02-06 23 views
12

Esiste un'alternativa per df[100, c("column")] nei frame di scala scala. Voglio selezionare una riga specifica da una colonna di frame dati spark. per esempio 100th riga codice equivalente sopra Rottenere una riga specifica da spark dataframe

+2

Eventuali duplicati di [Come leggere linee specifiche da sparkContext] (http://stackoverflow.com/questions/35221033/ how-to-read-specific-lines-from-sparkcontext) –

+0

Riguarda DataFrames e [Come leggere linee specifiche da sparkContext] (http://stackoverflow.com/questions/35221033/how-to-read-specific -lines-from-sparkcontext) riguarda gli RDD –

risposta

9

primo luogo, si deve capire che DataFrames sono distribuiti, che significa che non è possibile accedere in un tipico procedurale modo, è necessario eseguire un'analisi prima. Sebbene tu stia chiedendo di Scala ti suggerisco di leggere lo Pyspark Documentation, perché ha più esempi di qualsiasi altra documentazione.

Tuttavia, continuando con la mia spiegazione, vorrei utilizzare alcuni metodi dell'API RDD perché tutti gli DataFrame s hanno un attributo RDD come. Per favore, vedi il mio esempio qui sotto e nota come prendo il 2 ° record.

df = sqlContext.createDataFrame([("a", 1), ("b", 2), ("c", 3)], ["letter", "name"]) 
myIndex = 1 
values = (df.rdd.zipWithIndex() 
      .filter(lambda ((l, v), i): i == myIndex) 
      .map(lambda ((l,v), i): (l, v)) 
      .collect()) 

print(values[0]) 
# (u'b', 2) 

Speriamo che qualcuno dia un'altra soluzione con meno passaggi.

1

È così che ho raggiunto lo stesso risultato in Scala. Non sono sicuro se è più efficiente rispetto alla risposta valida, ma richiede meno di codifica

val parquetFileDF = sqlContext.read.parquet("myParquetFule.parquet") 

val myRow7th = parquetFileDF.rdd.take(7).last 
+0

L'output cambia in base al numero di nodi su cui i dati sono raggruppati? – bshelt141

Problemi correlati