Spark:合并两个数据帧

时间:2017-10-09 13:59:14

标签: apache-spark dataframe pyspark

用示例解释我的问题..

table_name

col1 col2 col3
1     aaa  xxx
1     bba  yyy
2     ccc  yyy

我希望我的最终输出如下:

table_name

col1 col2 col3
1     aab  xxx
1     bbc  yyy
2     cc   yyy

我有一个包含3列的表(没有主键),我不得不更改这3列中第2列的数据,现在我想用新的第2列替换旧列。

df1 = hc.sql("select col1 from table_name")
df2 = hc.sql("select col2 from table_name")
df3 = hc.sql("select col3 from table_name")

有什么方法可以做到这一点?

因为没有主键我觉得这是一种方式:

我可以为数据帧添加row_numbers(行号将是数据帧的新列),并且可以连接row_number上的所有数据帧。 - 这里的问题是当我从table_name"中选择col1时和"从table_name"中选择col2;没有保证在第一次和第二次查询中我将以相同的顺序获取行..(如果我错了请纠正我)

为了简化我只想在pyspark中执行以下操作:

table1

col_1
a
b
c

table2

col_2
d
e
f

into---

table_1_2

col1 col2
a    d
b    e
c    f

1 个答案:

答案 0 :(得分:0)

您可以使用withColumn将列添加到现有数据框。 你定义了将你的column2转换为新列的udf。 你能描述一下你想做的转变吗? 所以在你的情况下:

table 1 = table1.withColumn("newCol2", udf(col2))