Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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
Arrays 在Spark中合并两个不同类型的数据帧_Arrays_Apache Spark_Dataframe_Apache Spark Sql_Union - Fatal编程技术网

Arrays 在Spark中合并两个不同类型的数据帧

Arrays 在Spark中合并两个不同类型的数据帧,arrays,apache-spark,dataframe,apache-spark-sql,union,Arrays,Apache Spark,Dataframe,Apache Spark Sql,Union,在我最近的项目中,我需要合并两个不同大小的数据帧。 例如: 以下是我的示例数据: df1: 这里所有的字段都是字符串类型 df2: 这里的名称和地址是字符串类型,数字是数组类型 现在我需要合并这两个数据帧。我的预期结果如下: name number address kevin 101 NZ gevin 102 CA kevin [101,102] NZ gevin [102,103] CA 最终df类型应与df2(字符串、数组

在我最近的项目中,我需要合并两个不同大小的数据帧。 例如:

以下是我的示例数据:

df1:

这里所有的字段都是字符串类型

df2:

这里的名称和地址是字符串类型,数字是数组类型

现在我需要合并这两个数据帧。我的预期结果如下:

name    number    address
kevin   101         NZ
gevin   102         CA
kevin   [101,102]   NZ
gevin   [102,103]   CA

最终df类型应与df2(字符串、数组、字符串)相同。

您也可以将第一个数据帧转换为
array
,也可以将两个数据帧转换为
union

import org.apache.spark.sql.functions._

df1.withColumn("number", array($"number"))
   .union(df2)
输出:

+-----+----------+-------+
|name |number    |address|
+-----+----------+-------+
|kevin|[101]     |NZ     |
|gevin|[102]     |CZ     |
|kevin|[101, 102]|NZ     |
|gevin|[102, 103]|CZ     |
+-----+----------+-------+
希望这有帮助

import org.apache.spark.sql.functions._

df1.withColumn("number", array($"number"))
   .union(df2)
+-----+----------+-------+
|name |number    |address|
+-----+----------+-------+
|kevin|[101]     |NZ     |
|gevin|[102]     |CZ     |
|kevin|[101, 102]|NZ     |
|gevin|[102, 103]|CZ     |
+-----+----------+-------+