Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
两个数据帧的笛卡尔积和笛卡尔的和会产生火花(scala)?_Scala_Apache Spark_Apache Spark Sql_Spark Dataframe_Scala Collections - Fatal编程技术网

两个数据帧的笛卡尔积和笛卡尔的和会产生火花(scala)?

两个数据帧的笛卡尔积和笛卡尔的和会产生火花(scala)?,scala,apache-spark,apache-spark-sql,spark-dataframe,scala-collections,Scala,Apache Spark,Apache Spark Sql,Spark Dataframe,Scala Collections,我有两个数据帧(Spark scala),如下所示: df1 is Array((1,WrappedArray(1,2,3)),(2,WrappedArray(1,2,4))) org.apache.spark.sql.DataFrame = [id: int, features: array<float>] df2 is Array((1,WrappedArray(4,5,6)),(2,WrappedArray(3,5,6))) 笛卡尔和求和如下所示: ((11,(Array(

我有两个数据帧(Spark scala),如下所示:

df1 is Array((1,WrappedArray(1,2,3)),(2,WrappedArray(1,2,4)))
org.apache.spark.sql.DataFrame = [id: int, features: array<float>]

df2 is Array((1,WrappedArray(4,5,6)),(2,WrappedArray(3,5,6)))
笛卡尔和求和如下所示:

((11,(Array(1,2,3),Array(4,5,6))),(12,(Array(1,2,3),Array(3,5,6))),(21,(Array(1,2,4),Array(4,5,6))),(22,(Array(1,2,4),Array(3,5,6))))
数组((11,1*4+2*5+3*6),(12,1*3+2*5+3*6),(21,(1*4+2*5+4*6))(22,(1*3+2*5+4*6))

我尝试过笛卡尔式,如下所示:

scala> val cart=df1.cartesian(df2)
但我犯了一个错误

<console>:41: error: value cartesian is not a member of org.apache.spark.sql.DataFrame
请帮助我在这方面如何实现


数组((11,1*4+2*5+3*6),(12,1*3+2*5+3*6),(21,(1*4+2*5+4*6))(22,(1*3+2*5+4*6))

因为从数据帧转换为rdd,所以rdd的类型是
rdd[Row]
不是
rdd[(Int,List[Int])
。 您可以通过
as[(Int,List[Int])]
将数据帧转换为数据集,然后通过
将数据集转换为rdd。rdd
,您将获得
rdd[(Int,List[Int])]


我认为其余的代码可以完全正常工作。

因为您将数据帧转换为rdd,所以rdd的类型是
rdd[Row]
而不是
rdd[(Int,List[Int])]
。 您可以通过
as[(Int,List[Int])]
将数据帧转换为数据集,然后通过
将数据集转换为rdd。rdd
,您将获得
rdd[(Int,List[Int])]

我认为代码的其余部分将完全正常工作

 error: constructor cannot be instantiated to expected type;
 found   : (T1, T2)
 required: org.apache.spark.sql.Row