org.apache.spark.sql.catalyst.expressions.codegen.GenerateMutableProjection Scala Examples
The following examples show how to use org.apache.spark.sql.catalyst.expressions.codegen.GenerateMutableProjection.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
Example 1
Source File: EncodeLongTest.scala From morpheus with Apache License 2.0 | 5 votes |
package org.opencypher.morpheus.impl.encoders import org.apache.spark.sql.catalyst.expressions.codegen.GenerateMutableProjection import org.apache.spark.sql.catalyst.expressions.{Alias, GenericInternalRow} import org.apache.spark.sql.functions import org.apache.spark.sql.functions.typedLit import org.opencypher.morpheus.api.value.MorpheusElement._ import org.opencypher.morpheus.impl.expressions.EncodeLong import org.opencypher.morpheus.impl.expressions.EncodeLong._ import org.opencypher.morpheus.testing.MorpheusTestSuite import org.scalatestplus.scalacheck.Checkers class EncodeLongTest extends MorpheusTestSuite with Checkers { it("encodes longs correctly") { check((l: Long) => { val scala = l.encodeAsMorpheusId.toList val spark = typedLit[Long](l).encodeLongAsMorpheusId.expr.eval().asInstanceOf[Array[Byte]].toList scala === spark }, minSuccessful(1000)) } it("encoding/decoding is symmetric") { check((l: Long) => { val encoded = l.encodeAsMorpheusId val decoded = decodeLong(encoded) decoded === l }, minSuccessful(1000)) } it("scala version encodes longs correctly") { 0L.encodeAsMorpheusId.toList should equal(List(0.toByte)) } it("spark version encodes longs correctly") { typedLit[Long](0L).encodeLongAsMorpheusId.expr.eval().asInstanceOf[Array[Byte]].array.toList should equal(List(0.toByte)) } describe("Spark expression") { it("converts longs into byte arrays using expression interpreter") { check((l: Long) => { val positive = l & Long.MaxValue val inputRow = new GenericInternalRow(Array[Any](positive)) val encodeLong = EncodeLong(functions.lit(positive).expr) val interpreted = encodeLong.eval(inputRow).asInstanceOf[Array[Byte]] val decoded = decodeLong(interpreted) decoded === positive }, minSuccessful(1000)) } it("converts longs into byte arrays using expression code gen") { check((l: Long) => { val positive = l & Long.MaxValue val inputRow = new GenericInternalRow(Array[Any](positive)) val encodeLong = EncodeLong(functions.lit(positive).expr) val plan = GenerateMutableProjection.generate(Alias(encodeLong, s"Optimized($encodeLong)")() :: Nil) val codegen = plan(inputRow).get(0, encodeLong.dataType).asInstanceOf[Array[Byte]] val decoded = decodeLong(codegen) decoded === positive }, minSuccessful(1000)) } } }