Флинк scala Корпус класса - PullRequest
0 голосов
/ 25 апреля 2020

Я хочу знать, как заменить x._1._2, x._1._3 на имя поля, используя класс case

def keyuid(l:Array[String]) : (String,Long,String) ={
  //val l=s.split(",")
  val ip=l(3).split(":")(1)
  val values=Array("",0,0,0)
  val uid=l(1).split(":")(1)
  val timestamp=l(2).split(":")(1).toLong*1000
  val impression=l(4).split(":")(1)
  return (uid,timestamp,ip)
}

val cli_ip = click.map(_.split(","))
  .map(x => (keyuid(x), 1.0)).assignAscendingTimestamps(x=>x._1._2)
  .keyBy(x => x._1._3)
  .timeWindow(Time.seconds(10))
  .sum(1)

1 Ответ

1 голос
/ 25 апреля 2020

Использование Scala сопоставления с образцом при написании лямбда-функций с использованием фигурных скобок и ключевого слова case.

val cli_ip = click.map(_.split(","))
  .map(x => (keyuid(x), 1.0)).assignAscendingTimestamps { 
    case ((_, timestamp, _), _) => timestamp 
  }
  .keyBy { elem => elem match {
      case ((_, _, ip), _) => ip
    }
  }
  .timeWindow(Time.seconds(10))
  .sum(1)

Подробнее о кортежах и их синтаксисе сопоставления с образцом здесь: https://docs.scala-lang.org/tour/tuples.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...