spark DataFrame "as" 方法的使用
Usage of spark DataFrame "as" method
我正在查看 spark.sql.DataFrame 文档。
有
def as(alias: String): DataFrame
Returns a new DataFrame with an alias set.
Since
1.3.0
这个方法的目的是什么?它是如何使用的?能举个例子吗?
我没能在网上找到关于此方法的任何信息,而且文档几乎不存在。我还没有设法使用这种方法制作任何别名。
火花 <= 1.5
它或多或少等同于SQL table别名:
SELECT *
FROM table AS alias;
改编自 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
输出:
+-----+-----+---+
| name| name|age|
+-----+-----+---+
|Alice|Alice| 2|
| Bob| Bob| 5|
+-----+-----+---+
同样的事情使用 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""")
What is the purpose of this method?
几乎避免了模棱两可的列引用。
Spark 1.6+
还有一个新的as[U](implicit arg0: Encoder[U]): Dataset[U]
,用于将DataFrame
转换为给定类型的DataSet
。例如:
df.as[Person]
我正在查看 spark.sql.DataFrame 文档。
有
def as(alias: String): DataFrame
Returns a new DataFrame with an alias set.
Since
1.3.0
这个方法的目的是什么?它是如何使用的?能举个例子吗?
我没能在网上找到关于此方法的任何信息,而且文档几乎不存在。我还没有设法使用这种方法制作任何别名。
火花 <= 1.5
它或多或少等同于SQL table别名:
SELECT *
FROM table AS alias;
改编自 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
输出:
+-----+-----+---+
| name| name|age|
+-----+-----+---+
|Alice|Alice| 2|
| Bob| Bob| 5|
+-----+-----+---+
同样的事情使用 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""")
What is the purpose of this method?
几乎避免了模棱两可的列引用。
Spark 1.6+
还有一个新的as[U](implicit arg0: Encoder[U]): Dataset[U]
,用于将DataFrame
转换为给定类型的DataSet
。例如:
df.as[Person]