Utilizzando list comprehension in Python, è possibile raccogliere un'intera colonna di valori in una lista con solo due linee:
df = sqlContext.sql("show tables in default")
tableList = [x["tableName"] for x in df.rdd.collect()]
Nell'esempio di cui sopra, torniamo un elenco delle tabelle nel database ' default ', ma lo stesso può essere adattato sostituendo la query utilizzata in sql().
O più abbreviati:
tableList = [x["tableName"] for x in sqlContext.sql("show tables in default").rdd.collect()]
E per il vostro esempio di tre colonne, possiamo creare una lista di dizionari, e poi scorrere attraverso di loro in un ciclo for.
sql_text = "select name, age, city from user"
tupleList = [{name:x["name"], age:x["age"], city:x["city"]}
for x in sqlContext.sql(sql_text).rdd.collect()]
for row in tupleList:
print("{} is a {} year old from {}".format(
row["name"],
row["age"],
row["city"]))
Credo di aver fornito una risposta corretta. Puoi selezionare o fornire feedback per migliorare? – aaronsteers