Skip to content

Instantly share code, notes, and snippets.

@ecopoesis
ecopoesis / farm-consumer.scala
Last active January 8, 2020 18:20
KStream processor for farms joined to growers
object FarmConsumer {
val processedMessages: Cache[String, JBoolean] = CacheBuilder
.newBuilder()
.maximumSize(10000)
.build()
}
class FarmConsumer() extends Processor[GrowerKey, FarmWithGrower] {
import FarmConsumer._
@ecopoesis
ecopoesis / farm-topology.scala
Last active January 8, 2020 16:29
KStream topology for left joining farms to growers
final case class FarmWithGrower(farm: FarmMessage, grower: Option[GrowerMessage])
def topology(): Topology = {
val builder = new StreamsBuilder
val growers: KStream[GrowerKey, GrowerMessage] = builder.stream[GrowerKey, GrowerMessage]("growers")
val farms: KStream[FarmKey, FarmMessage] = builder.stream[FarmKey, FarmMessage]("farms")
farms
.flatMap[GrowerKey, FarmMessage] {
@ecopoesis
ecopoesis / gff.sql
Created January 8, 2020 15:49
Grower-Farm-Field hierarchy
create table growers (
id uuid primary key not null
);
create table farm (
id uuid primary key not null,
grower_id uuid not null references growers(id)
);
create table fields (
@ecopoesis
ecopoesis / SmoothedZscore.scala
Last active March 5, 2018 20:22
Implementation of smoothed z-score algorithm from https://stackoverflow.com/a/22640362/858463
package org.miker
import org.apache.commons.math3.stat.descriptive.SummaryStatistics
import vegas._
import scala.collection.mutable
object SmoothedZscore extends App {
val y = List(1d, 1d, 1.1d, 1d, 0.9d, 1d, 1d, 1.1d, 1d, 0.9d, 1d, 1.1d, 1d, 1d, 0.9d, 1d, 1d, 1.1d, 1d, 1d,
1d, 1d, 1.1d, 0.9d, 1d, 1.1d, 1d, 1d, 0.9d, 1d, 1.1d, 1d, 1d, 1.1d, 1d, 0.8d, 0.9d, 1d, 1.2d, 0.9d, 1d,