2016-03-01 11 views
5

Ho un dataframe Spark costruisce attraverso pyspark da un file JSON comeOttenere specifico campo da Riga scelto Pyspark dataframe

sc = SparkContext() 
sqlc = SQLContext(sc) 

users_df = sqlc.read.json('users.json') 

Ora, voglio accedere ad una chosen_user dati, dove questo è il suo _id campo. Posso fare

print users_df[users_df._id == chosen_user].show() 

e questo mi dà l'intera Riga dell'utente. Ma supponiamo che voglio solo un campo specifico nella riga, ad esempio il genere dell'utente, come potrei ottenerlo?

+0

È possibile estrarre le righe in base a più valori "scelto_utente" e non solo uno? – Nivi

risposta

13

Basta filtrare e selezionare:

result = users_df.where(users_df._id == chosen_user).select("gender") 

o con col

from pyspark.sql.functions import col 

result = users_df.where(col("_id") == chosen_user).select(col("gender")) 

Infine PySpark è solo un tuple con alcune estensioni in modo da poter, ad esempio flatMap:

result.rdd.flatMap(list).first() 

oppure map con qualcosa del genere:

result.rdd.map(lambda x: x.gender).first() 
+0

Puoi commentare anche il modo in cui estrarre il valore effettivo e inserire una variabile? Con la tua soluzione ottengo [Row (gender = u'male ')] quando esegui un'azione' collect 'alla fine. Mi piacerebbe davvero mettere "maschio" in una variabile allora. –

+0

Sicuro. Si prega di controllare la modifica. – zero323

+0

Perfetto, grazie mille. –

Problemi correlati