All Downloads are FREE. Search and download functionalities are using the official Maven repository.

tech.mlsql.plugins.sql.profiler.ZOrdering.scala Maven / Gradle / Ivy

The newest version!
package tech.mlsql.plugins.sql.profiler

import org.apache.spark.sql.expressions.UserDefinedFunction
import org.apache.spark.sql.{DataFrame, DataSetHelper, SparkSession}
import streaming.dsl.ScriptSQLExec
import streaming.dsl.auth.TableAuthResult
import streaming.dsl.mmlib.SQLAlg
import streaming.dsl.mmlib.algs.param.WowParams
import tech.mlsql.dsl.auth.ETAuth
import tech.mlsql.dsl.auth.dsl.mmlib.ETMethod.ETMethod
import tech.mlsql.indexer.impl.ZOrderingIndexer

/**
 * 31/12/2020 WilliamZhu([email protected])
 */
class ZOrdering(override val uid: String) extends SQLAlg with ETAuth with WowParams {
  def this() = this(WowParams.randomUID())

  override def train(df: DataFrame, path: String, params: Map[String, String]): DataFrame = {
    if (params.contains("schema")) {
      import df.sparkSession.implicits._
      return df.sparkSession.createDataset[String](Seq(df.schema.json)).toDF("value")
    }
    if(!params.contains("indexFields")){
      throw new RuntimeException("indexFields is required")
    }
    val indexer = new ZOrderingIndexer()
    val newDF = indexer.write(df, params)
    val temp = newDF.get
    temp
  }

  override def batchPredict(df: DataFrame, path: String, params: Map[String, String]): DataFrame = {
    val indexer = new ZOrderingIndexer()
    val finalLP = indexer.rewrite(df.queryExecution.analyzed, Map())
    val sparkSession = ScriptSQLExec.context().execListener.sparkSession
    val ds = DataSetHelper.create(sparkSession, finalLP)
    ds
  }

  override def load(sparkSession: SparkSession, path: String, params: Map[String, String]): Any = ???

  override def predict(sparkSession: SparkSession, _model: Any, name: String, params: Map[String, String]): UserDefinedFunction = ???

  override def auth(etMethod: ETMethod, path: String, params: Map[String, String]): List[TableAuthResult] = ???
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy