Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何在Spark中使用Dataframes(由structtype方法创建)合并具有不同列数的所有2个表?_Apache Spark_Dataframe_Hbase_Spark Dataframe - Fatal编程技术网

Apache spark 如何在Spark中使用Dataframes(由structtype方法创建)合并具有不同列数的所有2个表?

Apache spark 如何在Spark中使用Dataframes(由structtype方法创建)合并具有不同列数的所有2个表?,apache-spark,dataframe,hbase,spark-dataframe,Apache Spark,Dataframe,Hbase,Spark Dataframe,我有两个数据帧是使用Spark中的StructType方法创建的。 它们的列数都不相等。 我们需要把它们全部合并起来。请帮忙 在Spark Dataframes中,如果不添加虚拟列,则不可能执行此操作 DataFrame Uninall就像您的SQL联合一样,您需要它 要具有相同的列数和数据类型 基本要求是类型,在RDBMS sql或DataFrames中顺序应该相同 这意味着它们返回相同数量的列,并且相应的列具有兼容的数据类型 因此,您可以创建相同名称/类型的虚拟列,以符合联合体的要求 uni

我有两个数据帧是使用Spark中的
StructType
方法创建的。 它们的列数都不相等。 我们需要把它们全部合并起来。请帮忙

在Spark Dataframes中,如果不添加虚拟列,则不可能执行此操作

DataFrame Uninall就像您的SQL联合一样,您需要它 要具有相同的列数和数据类型

基本要求是类型,在RDBMS sql或DataFrames中顺序应该相同

这意味着它们返回相同数量的列,并且相应的列具有兼容的数据类型

因此,您可以创建相同名称/类型的虚拟列,以符合联合体的要求

unionAll公共数据帧unionAll(数据帧其他)

返回一个新的数据帧,其中包含此帧和 另一帧。这相当于SQL中的UNION ALL

参数:

其他-(无文件记录)

返回:

(无证件)

自:

1.3.0


SQL示例:

案例1: **可能:其中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 
案例2: **不可能:其中a(整数类型)、b(整数类型)、c(整数类型)和p(整数类型)、q(整数类型)、r(整数类型)、x(字符串类型)、y(整数类型)、z(字符串类型)**

案例3: 为了使之成为可能,您可以将虚拟列添加到表1中 x(字符串类型)、y(整数类型)、z(字符串类型)

在本例中,我添加了虚拟列“dasarathy”作为x,2作为y,“dr”作为z 数据帧也是如此


结论:如果绝对需要,您可以在dataframe中添加虚拟列(使用
withColumn
),以使dataframe1
unionall
DataFrame2我的答案有用吗?不。答案更一般。我没有看到您的消息,因为您没有添加@myname,所以请这样做。为了便于理解,我添加了sql示例,这些示例在数据帧中也类似。希望你现在明白了。如果你需要更多的例子,你需要评论和交谈。这是个好习惯。这样用户就可以得到更多的信息。如果你保持沉默,用户就不会有动力回答你的问题。如果您有任何问题,也可以随时提问。谢谢@Ram的解释
select a, b, c from table1 
 unionall
select p, q,r, x,y,z from table2 
 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