Skip to content

Instantly share code, notes, and snippets.

View josep2's full-sized avatar
🎯
Focusing

Jowanza Joseph josep2

🎯
Focusing
View GitHub Profile
import spray.json._
val myJson: String = "{
color: "red",
value: "#f00"
}" // JSON defined above
case class Settings(color: String, value: String) // Case class for the JSON
object SettingsProtocol extends DefaultJsonProtocol {
[
{
color: "red",
value: "#f00"
},
{
color: "green",
value: "#0f0"
},
{
val harmonic = new HarmonicMean
data.agg(harmonic(col("sales")).as("HarmonicMean")).show()
+-----------------+
| GeometricMean|
+-----------------+
|473.3701657458564|
+-----------------+
for( var x <- Range ){
statement(s);
}
// Taken From: https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/expressions/udaf.scala#L128-L136
@scala.annotation.varargs
def apply(exprs: Column*): Column = {
val aggregateExpression =
AggregateExpression(
ScalaUDAF(exprs.map(_.expr), this),
Complete,
isDistinct = false)
Column(aggregateExpression)
class ProductSum extends UserDefinedAggregateFunction {
override def inputSchema: org.apache.spark.sql.types.StructType =
StructType(Seq(StructField("value", DoubleType), StructField("value2", DoubleType)))
override def bufferSchema: StructType = StructType(
StructField("product", DoubleType) :: Nil
)
override def dataType: DataType = DoubleType
import org.apache.spark.sql.expressions.MutableAggregationBuffer
import org.apache.spark.sql.expressions.UserDefinedAggregateFunction
import org.apache.spark.sql.Row
import org.apache.spark.sql.types._
class HarmonicMean extends UserDefinedAggregateFunction {
// Defind the schema of the input data
override def inputSchema: org.apache.spark.sql.types.StructType =
StructType(StructField("value", DoubleType) :: Nil)
class GeometricMean extends UserDefinedAggregateFunction ...
def harmonicMean(values: Seq[Double]): Double = {
values.length / values.map(v => 1.0 / v).sum
}
// Borrowed from: https://github.com/Leksyk/ml/blob/3d2c8ede6ff99d8c6ec3f830e6a4c49b85ee8e82/similar-words/src/main/scala/Utils.scala
def harmonicMean(values: Seq[Double]): Double = {
values.length / values.map(v => 1.0 / v).sum
}