【问题标题】:What is the purpose of the alias method in PySpark?PySpark 中别名方法的目的是什么?
【发布时间】:2018-03-01 22:43:20
【问题描述】:

在 Python 中学习 Spark 时,我无法理解 alias 方法的用途及其用法。 documentation 显示它被用来创建具有新名称的现有 DataFrame 的副本,然后将它们连接在一起:

>>> from pyspark.sql.functions import *
>>> df_as1 = df.alias("df_as1")
>>> df_as2 = df.alias("df_as2")
>>> joined_df = df_as1.join(df_as2, col("df_as1.name") == col("df_as2.name"), 'inner')
>>> joined_df.select("df_as1.name", "df_as2.name", "df_as2.age").collect()
[Row(name=u'Bob', name=u'Bob', age=5), Row(name=u'Alice', name=u'Alice', age=2)]

我的问题有两个部分:

  1. alias 输入的用途是什么?当我们已经将新的 DataFrame 分配给变量 df_as1 时,给出别名字符串 "df_as1" 似乎是多余的。如果我们改用df_as1 = df.alias("new_df")"new_df" 会出现在哪里?

  2. 一般来说,alias 函数什么时候有用?上面的例子感觉有点人为,但是从探索教程和例子来看,它似乎经常被使用——我只是不清楚它提供了什么价值。

编辑:我最初的一些困惑来自DataFrameColumn 都有alias 方法这一事实。尽管如此,我仍然对上述两个问题感到好奇,现在问题 2 也适用于Column.alias

【问题讨论】:

    标签: python pyspark pyspark-sql


    【解决方案1】:
    1. 变量名无关紧要,可以是您喜欢的任何名称。它是字符串列标识符和打印输出中使用的别名。

    2. 我认为别名的主要目的是在列名冲突时实现更好的简洁性并避免可能的混淆。例如,在您搜索该列中的最大值之后,为了简洁起见,简单的“年龄”可以别名为“max_age”。或者,您可以将公司中的员工数据框与其自身连接并进行过滤,以便您拥有经理-下属对。在这种情况下使用像“manager.name”这样的列名可能很有用。

    【讨论】:

      猜你喜欢
      • 2013-06-18
      • 1970-01-01
      • 2022-08-24
      • 1970-01-01
      • 2021-08-14
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 2018-08-01
      相关资源
      最近更新 更多