将 dataframe 替换为 pyspark 中 select 中的别名

问题描述 投票:0回答:1

我正在尝试了解 pyspark 中的数据帧别名命令。这是我观察到的。

假设我有一个示例数据框

t1_df = spark.createDataFrame([['a'], ['b']], 'c1: string')

print(t1_df.show())
+---+
| c1|
+---+
|  a|
|  b|
+---+

现在我已经创建了它的别名

t2_df = t1_df.alias('df1')

如果我从第一个数据帧中选择第二个数据帧的列,它将正常工作,如下

t1_df.select(t2_df.c1)

+---+
| c1|
+---+
|  a|
|  b|
+---+

但是,如果我尝试使用别名进行相同的操作,则不起作用

t1_df.select(col('df1.c1'))

AnalysisException: [UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `df1`.`c1` cannot be resolved. Did you mean one of the following? [`c1`].;
'Project ['df1.c1]
+- LogicalRDD [c1#3311], false

为什么会这样?别名如何工作?我对以下内容没有任何特定目的,我只是感兴趣并尝试一些事情。

我使用的是 Spark 版本 3.4.1

dataframe apache-spark alias
1个回答
0
投票

异常消息清楚地告诉

df1.c1
列在
t1_df
DataFrame中不存在。

pyspark.errors.exceptions.captured.AnalysisException: [UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `df1`.`c1` cannot be resolved. Did you mean one of the following? [`c1`]
  • t2_df.c1
    将解析为
    Column<'c1'>
    &
    c1
    列存在于
    t1_df
    DataFrame 中,因此它有效。

  • col('df1.c1')
    将解析为
    Column<'df1.c1'>
    & 这在
    t1_df
    DataFrame 中不存在,因此它抛出异常
    AnalysisException: [UNRESOLVED_COLUMN.WITH_SUGGESTION]

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.