Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/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 火花数据帧和/或在同一单元格中_Apache Spark_Apache Spark Sql - Fatal编程技术网

Apache spark 火花数据帧和/或在同一单元格中

Apache spark 火花数据帧和/或在同一单元格中,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,我有两个Spark数据框,如下所示: DF1 DF2 d1、d2、d3中的所有值都是1或0,并且两个数据帧具有相同的列和join_键值。除了join_key之外,我想在每个单元格中生成类似“AND”的结果,如下所示: 结果=DF1和DF2(d1、d2、d3中每个单元格中的do和操作) 我想知道在Spark DataFrame中是否有可能实现这一点?如何生成,非常感谢。看起来您需要使用union,而不是join,因为两个数据帧中的模式完全相同。如果是这样,您可以简单地使用min聚合函数。如果您有多

我有两个Spark数据框,如下所示:

DF1

DF2

d1、d2、d3中的所有值都是1或0,并且两个数据帧具有相同的列和join_键值。除了join_key之外,我想在每个单元格中生成类似“AND”的结果,如下所示:

结果=DF1和DF2(d1、d2、d3中每个单元格中的do和操作)


我想知道在Spark DataFrame中是否有可能实现这一点?如何生成,非常感谢。

看起来您需要使用
union
,而不是
join
,因为两个数据帧中的模式完全相同。如果是这样,您可以简单地使用
min
聚合函数。如果您有多个列,可以对其进行迭代并生成相同的转换,下面是一个示例:

val commonColumns = (df1.columns.toSet & df2.columns.toSet).filter(_ != "join_key").toSeq
commonColumns

df1.union(df2)
    .groupBy("join_key")
    .agg(count(lit(1)) as "cnt", 
        commonColumns.map(c => when(min(col(c)) > 0, 1).otherwise(0) as c):_*)
    .select("join_key", commonColumns:_*)
        .show
输出为:

+--------+---+---+---+
|join_key| d1| d2| d3|
+--------+---+---+---+
|       b|  0|  1|  0|
|       a|  1|  0|  0|
+--------+---+---+---+
join_key  d1 d2 d3
 a        1   0  0
 b        0   1  0 
val commonColumns = (df1.columns.toSet & df2.columns.toSet).filter(_ != "join_key").toSeq
commonColumns

df1.union(df2)
    .groupBy("join_key")
    .agg(count(lit(1)) as "cnt", 
        commonColumns.map(c => when(min(col(c)) > 0, 1).otherwise(0) as c):_*)
    .select("join_key", commonColumns:_*)
        .show
+--------+---+---+---+
|join_key| d1| d2| d3|
+--------+---+---+---+
|       b|  0|  1|  0|
|       a|  1|  0|  0|
+--------+---+---+---+