我有两个在Spark中使用StructType
方法创建的数据帧。
它们的列数不等。
需要联合他们。请帮助。
答案 0 :(得分:1)
不可能使用Spark数据帧,而不是添加虚拟列
DataFrame UninonAll就像你需要的SQL联盟一样 具有相同数量的列和相同的数据类型...
union all基本要求是类型,RDBMS sql或DataFrames中的顺序应相同。
表示它们返回相同数量的列,相应的列具有兼容的数据类型
因此,您可以创建具有相同名称/类型的虚拟列,以符合联合要求。
unionAll public DataFrame unionAll(DataFrame other)
返回一个新的DataFrame,其中包含此框架中的行和 另一帧。这相当于SQL中的UNION ALL。
参数:
其他 - (无证件)
返回:
(无证)
自:
1.3.0
SQL示例:
**可能:其中a(int数据类型),b(int数据类型),c(int数据类型)& x(int数据类型),y(int数据类型),z(int数据类型)是相同的数据类型**
select a, b, c from table1
unionall
select x,y,z from table2
**不可能:其中a(int type),b(int type),c(int type)& p(int type),q(int type),r(int type),x(String type),y(int type),z(String type)**
select a, b, c from table1
unionall
select p, q,r, x,y,z from table2
为了使您可以向表1添加虚拟列 x(字符串类型),y(int类型),z(字符串类型)
select a, b, c, "dasarathy" as x, 2 as y, "dr" as z from table1
unionall
select p, q,r, x,y,z from table2
对于数据帧也是如此。
withColumn
)以生成dataframe1 unionall
dataframe2