gpt4 book ai didi

scala - spark DataFrame "as"方法的使用

转载 作者:行者123 更新时间:2023-12-04 03:00:41 24 4
gpt4 key购买 nike

我在看 spark.sql.DataFrame文档。


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

这种方法的目的是什么?它是如何使用的?可以举个例子吗?

我还没有在网上找到任何关于这种方法的信息,而且文档也很不存在。我没有设法使用这种方法制作任何类型的别名。

最佳答案

Spark <= 1.5

它或多或少相当于 SQL 表别名:

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]用于转换 DataFrameDataSet给定类型的。例如:
df.as[Person]

关于scala - spark DataFrame "as"方法的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31537420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com