Spark Scala-使用字段作为序列来操作案例类数据集的当前元素和下一个元素

时间:2018-11-19 20:28:30

标签: scala

问题:如何处理案例类序列中的当前元素和下一个元素。更多细节 : 我将结果字段作为ProceedResult的序列如下:

[
   [WrappedArray([1.955,89.105.200.57]),1], 
   [WrappedArray([3.103,185.147.12.11], [5.3575,185.147.12.31]),2], 
   [WrappedArray([3.143,185.147.12.19]),3], 
   [WrappedArray([3.678,160.242.100.88]),4], 
   [WrappedArray([6.082,196.216.48.144]),5], 
   [WrappedArray([7.711,193.239.116.112]),6], 
   [WrappedArray([8.228,192.5.5.241]),7]
]

result的每个元素都是一个对象,该对象具有ProceedSignal(结果字段)和整数(跳数字段)的序列:

case class ProceedResult(
     var result: Seq[ProceedSignal],
     hop:        Int
)

  case class ProceedSignal(
      medianRtt: Double,
      from:      String
  )

例如[WrappedArray([1.955,89.105.200.57]),1]是ProceedResult的一个实例;

hop = 1,结果的第二个元素是:WrappedArray([1.955,89.105.200.57]) 同样,WrappedArray([1.955,89.105.200.57])是ProceedSignal的实例,其中1.955是位数Rtt字段,而89.105.200.57是发件人字段。 目的是通过将每个序列的元素与下一个序列的元素进行组合来创建Link对象。举个例子 enter image description here

使用1和2的数据是通过以下方式完成的:

将1的每个元素与2的每个元素重复,因此:

  1. 使用[1.955,89.105.200.57]和[3.103,185.147.12.11]创建一个Link实例。

  2. 使用[1.955,89.105.200.57]和[5.3575,185.147.12.31]创建第二个Link实例

使用2和3的数据是通过以下方式完成的:

将2的每个元素与3的每个元素重复,所以:

  1. 使用[3.103,185.147.12.11]和[3.143,185.147.12.19]创建一个Link实例。

  2. 使用[5.3575,185.147.12.31]和[3.143,185.147.12.19]创建一个Link实例。

有关信息,链接案例类别如下:

  case class Link(
     ip1:     String,
     ip2:     String,
     rttDiff: Double
  )

希望我能提供足够的信息来帮助我。

0 个答案:

没有答案