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]
Grazie. Ho avuto l'impressione che sia usato per le colonne di aliasing in qualche modo. Pubblicherò una domanda su questo. –