PySpark 中别名方法的用途是什么?
What is the purpose of the alias method in PySpark?
在 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)]
我的问题分为两部分:
alias
输入的目的是什么?当我们已经将新的 DataFrame 分配给变量 df_as1
时,给别名字符串 "df_as1"
似乎是多余的。如果我们改用 df_as1 = df.alias("new_df")
,"new_df"
会出现在哪里?
一般来说,alias
函数什么时候有用?上面的例子感觉有点人为,但从探索教程和例子来看,它似乎经常被使用——我只是不清楚它提供了什么价值。
编辑:我最初的一些困惑来自于 DataFrame
和 Column
都有 alias
方法这一事实。尽管如此,我仍然对上述两个问题感到好奇,问题 2 现在也适用于 Column.alias
。
变量名是无关紧要的,可以是任何你喜欢的名字。这是将在字符串列标识符和打印输出中使用的别名。
我认为别名的主要目的是实现更好的简洁性,避免列名冲突时可能出现的混淆。例如,在您搜索该列中的最大值后,为了简洁起见,简单的 'age' 可以别名为 'max_age'。或者,您可以为公司中的员工加入一个数据框并进行过滤,以便您拥有经理-下属对。在这种情况下使用像 "manager.name" 这样的列名可能很有用。
在 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)]
我的问题分为两部分:
alias
输入的目的是什么?当我们已经将新的 DataFrame 分配给变量df_as1
时,给别名字符串"df_as1"
似乎是多余的。如果我们改用df_as1 = df.alias("new_df")
,"new_df"
会出现在哪里?一般来说,
alias
函数什么时候有用?上面的例子感觉有点人为,但从探索教程和例子来看,它似乎经常被使用——我只是不清楚它提供了什么价值。
编辑:我最初的一些困惑来自于 DataFrame
和 Column
都有 alias
方法这一事实。尽管如此,我仍然对上述两个问题感到好奇,问题 2 现在也适用于 Column.alias
。
变量名是无关紧要的,可以是任何你喜欢的名字。这是将在字符串列标识符和打印输出中使用的别名。
我认为别名的主要目的是实现更好的简洁性,避免列名冲突时可能出现的混淆。例如,在您搜索该列中的最大值后,为了简洁起见,简单的 'age' 可以别名为 'max_age'。或者,您可以为公司中的员工加入一个数据框并进行过滤,以便您拥有经理-下属对。在这种情况下使用像 "manager.name" 这样的列名可能很有用。