Pyspark中别名方法的目的是什么



在学习python的Spark时,我很难理解alias方法的目的及其用法。该文档显示它用于创建带有新名称的现有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输入的目的是什么?当我们已经将新数据框分配给变量df_as1时,给出别名字符串"df_as1"似乎是多余的。如果我们要使用df_as1 = df.alias("new_df")"new_df"会在哪里出现?

  2. 通常, alias何时有用?上面的示例感觉有些人造,但是从探索教程和示例似乎是定期使用的 - 我只是不清楚它所提供的值。

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

  1. 变量名称无关紧要,可以是您想要的。这是字符串列标识符和打印输出中将使用的内容。

  2. 我认为别名的主要目的是实现更好的简短,并在具有冲突的列名称时避免可能混淆。例如,在您搜索该列中最大的价值后,简单地将"年龄"的简单变为" max_age"。或者,您可以为公司中的员工提供一个数据框架,并与自己加入并过滤,以便您拥有经理分级对。在这种上下文中使用诸如" Manager.name"之类的列名可能很有用。

相关内容

  • 没有找到相关文章

最新更新