将pyspark列连接到pyspark DataFrame

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将pyspark列连接到pyspark DataFrame相关的知识,希望对你有一定的参考价值。

我正在使用python,目前有几个类pyspark.sql.column.Column的实例,并希望连接它们,以便我得到一个带有上述列的pyspark.sql.dataframe.DataFrame对象。让我用以下玩具示例来说明这一点。

玩具示例

1)让我们首先创建一个示例pyspark DataFrame,以便能够获得两个示例列。

from pyspark.sql import SQLContext
# Create a DataFrame
df = sqlContext.createDataFrame([("Jordi", 14, 45), ("Elisabeth", 22, 63), ("Aina", 8, 35)], ("name", "age", "weight"))
# Get two columns
col1 = df.name
col2 = df.age

2)现在我的目标是能够将变量col1col2组合到一个DataFrame中,这样这个新的DataFrame包含两列:

|   name    |   age  |
|-----------+--------|
| Jordi     |   14   |
| Elisabeth |   22   |
| Aina      |   8    |
答案

我不确定从用于表达式的spark列创建数据帧。您可以使用select语句:

df.select('name', 'age')

如果您有2个数据框,并且无法通过公共列加入它们:

from pyspark.sql import Row

df_temp1 = df1 
             .select(col1) 
             .rdd 
             .zipWithIndex() # (row, id) 
             .map(lambda row: Row(id=row[1], **row[0].asDict())) 
             .toDf()

df_temp2 = df2 
             .select(col2) 
             .rdd 
             .zipWithIndex() # (row, id) 
             .map(lambda row: Row(id=row[1], **row[0].asDict())) 
             .toDf()
 df = df2_temp.join(df1_temp, 'id')

以上是关于将pyspark列连接到pyspark DataFrame的主要内容,如果未能解决你的问题,请参考以下文章

从 Docker 容器将 PySpark 连接到 Kafka

如何将 PySpark 连接到 Bigquery

将 pyspark 连接到 SQL Server 时出错

如何将 Pyspark 连接到在 docker 上运行的 datastax Cassandra?

使用pyspark将两个字符串列值连接到整数数组

在 pyspark 中,如何将字符串添加/连接到列?