【问题标题】:Usage of spark DataFrame "as" methodspark DataFrame "as" 方法的使用
【发布时间】:2015-10-10 19:27:30
【问题描述】:

我正在查看spark.sql.DataFrame 文档。

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

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

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

【问题讨论】:

    标签: scala apache-spark dataframe apache-spark-sql


    【解决方案1】:

    火花

    它或多或少等同于 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""")
    

    这个方法的目的是什么?

    几乎避免了模棱两可的列引用。

    Spark 1.6+

    还有一个新的as[U](implicit arg0: Encoder[U]): Dataset[U] 用于将DataFrame 转换为给定类型的DataSet。例如:

    df.as[Person]
    

    【讨论】:

    • 谢谢。我的印象是它以某种方式用于别名列。我将发布一个关于此的问题。
    猜你喜欢
    • 2016-09-26
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 2016-09-06
    • 2016-07-02
    • 2020-08-10
    • 2020-12-18
    • 1970-01-01
    相关资源
    最近更新 更多