2015-07-21 18 views
6

Sto guardando la documentazione spark.sql.DataFrame.Utilizzo di scintilla DataFrame metodo "come"

C'è

def as(alias: String): DataFrame 
    Returns a new DataFrame with an alias set. 
    Since 
     1.3.0 

Qual è lo scopo di questo metodo? Come viene usato? Può esserci un esempio?

Non sono riuscito a trovare nulla su questo metodo in linea e la documentazione è piuttosto inesistente. Non sono riuscito a creare alcun tipo di alias con questo metodo.

risposta

14

Spark < = 1,5

è più o meno equivalente alla tabella SQL alias: Utilizzo

SELECT * 
FROM table AS alias; 

Esempio adattato da PySpark alias documentation:

import org.apache.spark.sql.functions.col 
case class Person(name: String, age: Int) 

val df = sqlContext.createDataFrame(
    Person("Alice", 2) :: Person("Bob", 5) :: Nil) 

val df_as1 = df.as("df1") 
val df_as2 = df.as("df2") 
val joined_df = df_as1.join(
    df_as2, col("df1.name") === col("df2.name"), "inner") 
joined_df.select(
    col("df1.name"), col("df2.name"), col("df2.age")).show 

uscita:

+-----+-----+---+ 
| name| name|age| 
+-----+-----+---+ 
|Alice|Alice| 2| 
| Bob| Bob| 5| 
+-----+-----+---+ 

Stessa cosa query utilizzando SQL:

df.registerTempTable("df") 
sqlContext.sql("""SELECT df1.name, df2.name, df2.age 
        FROM df AS df1 JOIN df AS df2 
        ON df1.name == df2.name""") 

Qual è lo scopo di questo metodo?

Praticamente evitando riferimenti alle colonne ambigue.

Spark 1.6 +

C'è anche un nuovo as[U](implicit arg0: Encoder[U]): Dataset[U] che viene utilizzato per convertire un DataFrame ad un DataSet di un dato tipo. Ad esempio:

df.as[Person] 
+0

Grazie. Ho avuto l'impressione che sia usato per le colonne di aliasing in qualche modo. Pubblicherò una domanda su questo. –

Problemi correlati