当前位置: 首页 > 知识库问答 >
问题:

Spark--在Scala中从两个数组的笛卡尔乘积创建一个数据frame

宰父飞翼
2023-03-14

我有两个数组:

val customers = Array("Alice", "Bob", "Mike","Charly")
val customersLen = customers.length 
val items = Array("milk", "bread", "butter", "apples", "oranges")
val itemsLen = items.length 
val size = (customersLen*itemsLen)-1

我可以在一个数组中创建这两个数组的笛卡尔积,如下所示:

val cartesianProd= for(i <- 0 to size) yield (customers(i % customersLen ),items(i % itemsLen ))

输出将是:

val dfCustItem = Seq(for(i <- 0 to size ) yield(customers (i % customersLen ),items(i % itemsLen ))).toDF("customer","item")

共有1个答案

贺刚毅
2023-03-14

您有一个额外的seq,所以只需删除它就可以了

val dfCustItem = (for(i <- 0 to size ) yield(customers (i % customersLen ),items(i % itemsLen ))).toDF("customer","item")

说明:

如您所见,for(i<-0 to size)yield(customers(i%customersLen),items(i%itemsLen))已经scala.collection.immutable.indexedseq[(String,String)]添加seq将生成seq[scala.collection.immutable.indexedseq[(String,String)]],而在seq中需要

 类似资料:
  • 问题内容: 您将如何在JavaScript中实现多个数组的笛卡尔积? 举个例子, 应该回来 问题答案: 这是使用和提供的解决问题的功能解决方案(没有任何 可变变量 !),该提供者为:

  • 我正在尝试对一个后端服务器进行负载测试,并将一些配置解析到一个标签对象中。我正在尝试生成< code>Label对象的笛卡尔乘积,这将是一个< code>Metric对象。 我有一个 方法添加 我试图以迭代/递归的方式做到这一点,但它变得非常复杂和混乱。我检查了是否有java8替代方案。如果我能够获得

  • 我可以在Scala中通过以下内容轻松实现这一点: 所以如果我给它{1,2},{3,4},我返回{1,3},{1,4},{2,3},{2,4} 我希望能够使用Streams将其转换为Java8。 我有一点困难,我希望能够扩展到更远的地方,因为我希望能够从两个以上的列表中生成许多排列的测试样本。 如何用Java8流制作笛卡尔积?

  • 本文向大家介绍map reduce实现笛卡尔乘积?相关面试题,主要包含被问及map reduce实现笛卡尔乘积?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 在Map阶段,将来自矩阵A的元素标识成l条<key,value>的形式,key=(i,k),k=1,2,…,l。value=(j,)。将来自矩阵B的元素标识成l条<key,value>的形式,key=(i,k),k=1,2,…,m。

  • 的结果将是二维数组: 我试图做的是使用流在Java中编写这个笛卡尔乘积函数。 到目前为止,我有以下Java版本: 我对问题的猜测是: 我需要在某个地方使用收集器(可能在之后) 标识的数据类型错误

  • 问题内容: 我想在两个SELECT语句之间执行笛卡尔积 我希望结果是(1,2)与(3,4)的每种组合,例如: 问题答案: 您可以使用CROSS JOIN子句 其中MyTable1有两行,分别包含1和2;MyTable2有两行,分别包含3和4。