java.util.Locale Scala Examples
The following examples show how to use java.util.Locale.
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: timing.scala From libisabelle with Apache License 2.0 | 5 votes |
package isabelle import java.util.Locale object Timing { val zero: Timing = Timing(Time.zero, Time.zero, Time.zero) def timeit[A]( message: String = "", enabled: Boolean = true, output: String => Unit = Output.warning(_))(e: => A): A = { if (enabled) { val start = Time.now() val result = Exn.capture(e) val stop = Time.now() val timing = stop - start if (timing.is_relevant) { output( (if (message == null || message == "") "" else message + ": ") + timing.message + " elapsed time") } Exn.release(result) } else e } } sealed case class Timing(elapsed: Time, cpu: Time, gc: Time) { def is_zero: Boolean = elapsed.is_zero && cpu.is_zero && gc.is_zero def is_relevant: Boolean = elapsed.is_relevant || cpu.is_relevant || gc.is_relevant def resources: Time = cpu + gc def factor: Option[Double] = { val t1 = elapsed.seconds val t2 = resources.seconds if (t1 >= 3.0 && t2 >= 3.0) Some(t2 / t1) else None } def + (t: Timing): Timing = Timing(elapsed + t.elapsed, cpu + t.cpu, gc + t.gc) def message: String = elapsed.message + " elapsed time, " + cpu.message + " cpu time, " + gc.message + " GC time" def message_resources: String = { val factor_text = factor match { case Some(f) => String.format(Locale.ROOT, ", factor %.2f", new java.lang.Double(f)) case None => "" } if (resources.seconds >= 3.0) elapsed.message_hms + " elapsed time, " + resources.message_hms + " cpu time" + factor_text else elapsed.message_hms + " elapsed time" + factor_text } override def toString: String = message def json: JSON.Object.T = JSON.Object("elapsed" -> elapsed.seconds, "cpu" -> cpu.seconds, "gc" -> gc.seconds) }
Example 2
Source File: Implicits.scala From activemq-cli with Apache License 2.0 | 5 votes |
package activemq.cli.util import com.typesafe.config.Config import java.util.Date import java.util.Locale import java.text.SimpleDateFormat import javax.jms.Message import javax.jms.TextMessage import scala.collection.JavaConversions._ object Implicits { implicit class RichConfig(val underlying: Config) extends AnyVal { def getOptionalString(path: String): Option[String] = if (underlying.hasPath(path)) { Some(underlying.getString(path)) } else { None } } implicit def optionStringToBoolean(o: Option[String]): Boolean = { !o.getOrElse("").isEmpty } implicit class MessageImprovements(val message: Message) { val prettyPrinter = new scala.xml.PrettyPrinter(100000, 2) //scalastyle:ignore def toXML(timestampFormat: Option[String] = None): String = { val addOptional = (condition: Boolean, xml: scala.xml.Elem) ⇒ if (condition) xml else scala.xml.NodeSeq.Empty prettyPrinter.format(<jms-message> <header> <message-id>{ message.getJMSMessageID }</message-id> { addOptional(Option(message.getJMSCorrelationID).isDefined, <correlation-id>{ message.getJMSCorrelationID }</correlation-id>) } <delivery-mode>{ message.getJMSDeliveryMode }</delivery-mode> <destination>{ message.getJMSDestination }</destination> <expiration>{ message.getJMSExpiration }</expiration> <priority>{ message.getJMSPriority }</priority> <redelivered>{ message.getJMSRedelivered }</redelivered> { addOptional(Option(message.getJMSReplyTo).isDefined, <reply-to>{ message.getJMSReplyTo }</reply-to>) } <timestamp>{ timestampFormat match { case Some(matched)⇒ new SimpleDateFormat(matched).format(new Date(message.getJMSTimestamp)) case _⇒ message.getJMSTimestamp } }</timestamp> { addOptional(Option(message.getJMSType).isDefined, <type>{ message.getJMSType }</type>) } </header> { addOptional(message.getPropertyNames.hasMoreElements, <properties> { message.getPropertyNames.map(name ⇒ <property><name>{ name }</name><value>{ message.getStringProperty(name.toString) }</value></property>) } </properties>) } { message match { case textMessage: TextMessage if Option(textMessage.getText).isDefined ⇒ addOptional( textMessage.getText, <body>{ scala.xml.PCData(textMessage.getText.replaceAll("]]>", "]]]]><![CDATA[>")) }</body> ) case _⇒ scala.xml.NodeSeq.Empty } } </jms-message>) } def textMatches(regex: String): Boolean = { if (regex) { message match { case textMessage: TextMessage ⇒ (regex.r findFirstIn textMessage.getText) case _ ⇒ false } } else { true } } } }
Example 3
Source File: NetflixPrizeUtils.scala From zen with Apache License 2.0 | 5 votes |
package com.github.cloudml.zen.examples.ml import java.text.SimpleDateFormat import java.util.{Locale, TimeZone} import breeze.linalg.{SparseVector => BSV} import org.apache.spark.SparkContext import org.apache.spark.mllib.linalg.{SparseVector => SSV} import org.apache.spark.mllib.regression.LabeledPoint import org.apache.spark.rdd.RDD import org.apache.spark.storage.StorageLevel import scala.collection.mutable.ArrayBuffer object NetflixPrizeUtils { def genSamplesWithTime( sc: SparkContext, input: String, numPartitions: Int = -1, newLevel: StorageLevel = StorageLevel.MEMORY_AND_DISK): (RDD[(Long, LabeledPoint)], RDD[(Long, LabeledPoint)], Array[Long]) = { val probeFile = s"$input/probe.txt" val dataSetFile = s"$input/training_set val views = Array(maxUserId, maxMovieId + maxUserId, numFeatures).map(_.toLong) (trainSet, testSet, views) } }
Example 4
Source File: BuildCredentials.scala From scio with Apache License 2.0 | 5 votes |
// Ported from // https://github.com/google/google-api-java-client/blob/master/google-api-client/src/main/java/com/google/api/client/googleapis/auth/oauth2/DefaultCredentialProvider.java import java.io.File import java.util.Locale object BuildCredentials { private val CREDENTIAL_ENV_VAR = "GOOGLE_APPLICATION_CREDENTIALS" private val CLOUDSDK_CONFIG_DIRECTORY = "gcloud" private val WELL_KNOWN_CREDENTIALS_FILE = "application_default_credentials.json" def exists: Boolean = runningUsingEnvironmentVariable || runningUsingWellKnownFile private def runningUsingEnvironmentVariable: Boolean = { val credentialsPath = sys.env.getOrElse(CREDENTIAL_ENV_VAR, null) if (credentialsPath == null || credentialsPath.length == 0) { false } else { val credentialsFile = new File(credentialsPath) fileExists(credentialsFile) } } private def runningUsingWellKnownFile: Boolean = { val os = sys.props.getOrElse("os.name", "").toLowerCase(Locale.US) val cloudConfigPath = if (os.contains("windows")) { val appDataPath = new File(sys.env("APPDATA")) new File(appDataPath, CLOUDSDK_CONFIG_DIRECTORY) } else { val configPath = new File(sys.props.getOrElse("user.home", ""), ".config") new File(configPath, CLOUDSDK_CONFIG_DIRECTORY) } val credentialFilePath = new File(cloudConfigPath, WELL_KNOWN_CREDENTIALS_FILE) fileExists(credentialFilePath) } private def fileExists(file: File): Boolean = file.exists() && !file.isDirectory }
Example 5
Source File: RequestDSL.scala From twitter4s with Apache License 2.0 | 5 votes |
package com.danielasfregola.twitter4s.helpers import java.text.SimpleDateFormat import java.util.Locale import akka.http.scaladsl.model._ import akka.http.scaladsl.model.headers.RawHeader import akka.testkit.TestProbe import com.danielasfregola.twitter4s.entities.RateLimit import org.specs2.specification.AfterEach import scala.concurrent.duration._ import scala.concurrent.{Await, Future} abstract class RequestDSL extends TestActorSystem with FixturesSupport with AfterEach { def after = system.terminate private val timeout = 10 seconds val headers = List(RawHeader("x-rate-limit-limit", "15"), RawHeader("x-rate-limit-remaining", "14"), RawHeader("x-rate-limit-reset", "1445181993")) val rateLimit = { val dateFormatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss ZZZZ yyyy", Locale.ENGLISH) val resetDate = dateFormatter.parse("Sun Oct 18 15:26:33 +0000 2015").toInstant new RateLimit(limit = 15, remaining = 14, reset = resetDate) } protected val transport = TestProbe() def when[T](future: Future[T]): RequestMatcher[T] = new RequestMatcher(future) class RequestMatcher[T](future: Future[T]) { protected def responder = new Responder(future) def expectRequest(req: HttpRequest): Responder[T] = { transport.expectMsg(timeout, req) responder } def expectRequest(fn: HttpRequest => Unit) = { transport.expectMsgPF(timeout) { case req: HttpRequest => fn(req) } responder } } class Responder[T](future: Future[T]) { def respondWith(response: HttpResponse): Await[T] = { transport.reply(response) new Await(future) } def respondWith(resourcePath: String): Await[T] = respondWith(HttpResponse(StatusCodes.OK, entity = HttpEntity(MediaTypes.`application/json`, load(resourcePath)))) def respondWithRated(resourcePath: String): Await[T] = respondWith( HttpResponse(StatusCodes.OK, headers = headers, entity = HttpEntity(MediaTypes.`application/json`, load(resourcePath)))) def respondWithOk: Await[Unit] = { val response = HttpResponse(StatusCodes.OK, entity = HttpEntity(MediaTypes.`application/json`, """{"code": "OK"}""")) transport.reply(response) new Await(Future.successful((): Unit)) } } class Await[T](future: Future[T]) { private[helpers] val underlyingFuture = future def await(implicit duration: FiniteDuration = 20 seconds) = Await.result(future, duration) } implicit def awaitToReqMatcher[T](await: Await[T]) = new RequestMatcher(await.underlyingFuture) }
Example 6
Source File: TPCDSQueryBenchmarkArguments.scala From spark-sql-server with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.benchmark import java.util.Locale class TPCDSQueryBenchmarkArguments(val args: Array[String]) { var dataLocation: String = null var host: String = "localhost:5432" var queryFilter: Set[String] = Set.empty parseArgs(args.toList) validateArguments() private def parseArgs(inputArgs: List[String]): Unit = { var args = inputArgs while(args.nonEmpty) { args match { case ("--data-location") :: value :: tail => dataLocation = value args = tail case ("--host") :: value :: tail => host = value args = tail case ("--query-filter") :: value :: tail => queryFilter = value.toLowerCase(Locale.ROOT).split(",").map(_.trim).toSet args = tail case _ => // scalastyle:off println System.err.println("Unknown/unsupported param " + args) // scalastyle:on println printUsageAndExit(1) } } } private def printUsageAndExit(exitCode: Int): Unit = { // scalastyle:off System.err.println(""" |Usage: spark-submit --class <this class> <spark sql test jar> [Options] |Options: | --data-location Path to TPCDS data | --host Host to connect with a PostgreSQL JDBC driver (default: localhost:5432) | --query-filter Queries to filter, e.g., q3,q5,q13 | |------------------------------------------------------------------------------------------------------------------ |In order to run this benchmark, please follow the instructions at |https://github.com/databricks/spark-sql-perf/blob/master/README.md |to generate the TPCDS data locally (preferably with a scale factor of 5 for benchmarking). |Thereafter, the value of <TPCDS data location> needs to be set to the location where the generated data is stored. """.stripMargin) // scalastyle:on System.exit(exitCode) } private def validateArguments(): Unit = { if (dataLocation == null) { // scalastyle:off println System.err.println("Must specify a data location") // scalastyle:on println printUsageAndExit(-1) } } }
Example 7
Source File: AkkaDecodeInputsContext.scala From tapir with Apache License 2.0 | 5 votes |
package sttp.tapir.server.akkahttp import java.util.Locale import akka.http.scaladsl.model.headers.{`Content-Length`, `Content-Type`} import akka.http.scaladsl.model.{HttpHeader, Uri} import akka.http.scaladsl.server.RequestContext import sttp.model.{Method, QueryParams} import sttp.tapir.model.ServerRequest import sttp.tapir.server.internal.DecodeInputsContext private[akkahttp] class AkkaDecodeInputsContext(req: RequestContext) extends DecodeInputsContext { // Add low-level headers that have been removed by akka-http. // https://doc.akka.io/docs/akka-http/current/common/http-model.html?language=scala#http-headers // https://github.com/softwaremill/tapir/issues/331 private lazy val allHeaders: List[HttpHeader] = { val contentLength = req.request.entity.contentLengthOption.map(`Content-Length`(_)) val contentType = `Content-Type`(req.request.entity.contentType) contentType :: contentLength.toList ++ req.request.headers } override def method: Method = Method(req.request.method.value) override def nextPathSegment: (Option[String], DecodeInputsContext) = { req.unmatchedPath match { case Uri.Path.Slash(pathTail) => new AkkaDecodeInputsContext(req.withUnmatchedPath(pathTail)).nextPathSegment case Uri.Path.Segment(s, pathTail) => (Some(s), new AkkaDecodeInputsContext(req.withUnmatchedPath(pathTail))) case _ => (None, this) } } override def header(name: String): List[String] = { val nameInLowerCase = name.toLowerCase(Locale.ROOT) allHeaders.filter(_.is(nameInLowerCase)).map(_.value) } override def headers: Seq[(String, String)] = allHeaders.map(h => (h.name, h.value)) override def queryParameter(name: String): Seq[String] = req.request.uri.query().getAll(name).reverse override def queryParameters: QueryParams = QueryParams.fromSeq(req.request.uri.query()) override def bodyStream: Any = req.request.entity.dataBytes override def serverRequest: ServerRequest = new AkkaServerRequest(req) }
Example 8
Source File: timing.scala From libisabelle with Apache License 2.0 | 5 votes |
package isabelle import java.util.Locale object Timing { val zero: Timing = Timing(Time.zero, Time.zero, Time.zero) def timeit[A]( message: String = "", enabled: Boolean = true, output: String => Unit = Output.warning(_))(e: => A): A = { if (enabled) { val start = Time.now() val result = Exn.capture(e) val stop = Time.now() val timing = stop - start if (timing.is_relevant) { output( (if (message == null || message == "") "" else message + ": ") + timing.message + " elapsed time") } Exn.release(result) } else e } } sealed case class Timing(elapsed: Time, cpu: Time, gc: Time) { def is_zero: Boolean = elapsed.is_zero && cpu.is_zero && gc.is_zero def is_relevant: Boolean = elapsed.is_relevant || cpu.is_relevant || gc.is_relevant def resources: Time = cpu + gc def factor: Option[Double] = { val t1 = elapsed.seconds val t2 = resources.seconds if (t1 >= 3.0 && t2 >= 3.0) Some(t2 / t1) else None } def + (t: Timing): Timing = Timing(elapsed + t.elapsed, cpu + t.cpu, gc + t.gc) def message: String = elapsed.message + " elapsed time, " + cpu.message + " cpu time, " + gc.message + " GC time" def message_resources: String = { val factor_text = factor match { case Some(f) => String.format(Locale.ROOT, ", factor %.2f", new java.lang.Double(f)) case None => "" } if (resources.seconds >= 3.0) elapsed.message_hms + " elapsed time, " + resources.message_hms + " cpu time" + factor_text else elapsed.message_hms + " elapsed time" + factor_text } override def toString: String = message def json: JSON.Object.T = JSON.Object("elapsed" -> elapsed.seconds, "cpu" -> cpu.seconds, "gc" -> gc.seconds) }
Example 9
Source File: profiling_report.scala From libisabelle with Apache License 2.0 | 5 votes |
package isabelle import java.util.Locale object Profiling_Report { def profiling_report(log_file: Build_Log.Log_File): List[(Long, String)] = { val Line = """^(?:### )?([ 0-9]{10}) (\S+|GARBAGE COLLECTION.*)$""".r val Count = """ *(\d+)""".r val clean = """-?\(\d+\).*$""".r var results = Map.empty[String, Long] for (Line(Count(Value.Long(count)), raw_fun) <- log_file.lines) { val fun = clean.replaceAllIn(raw_fun, "") results += (fun -> (results.getOrElse(fun, 0L) + count)) } for ((fun, count) <- results.toList.sortBy(_._2)) yield (count, fun) } val isabelle_tool = Isabelle_Tool("profiling_report", "report Poly/ML profiling information from log files", args => { Command_Line.tool0 { val getopts = Getopts(""" Usage: isabelle profiling_report [LOGS ...] Report Poly/ML profiling output from log files (potentially compressed). """) val log_names = getopts(args) for (name <- log_names) { val log_file = Build_Log.Log_File(Path.explode(name)) val results = for ((count, fun) <- profiling_report(log_file)) yield String.format(Locale.ROOT, "%14d %s", count.asInstanceOf[AnyRef], fun.asInstanceOf[AnyRef]) if (results.nonEmpty) Output.writeln(cat_lines((log_file.name + ":") :: results)) } } }) }
Example 10
Source File: CustomResourceBundle.scala From MoVE with Mozilla Public License 2.0 | 5 votes |
package de.thm.move.util import java.util import java.util.{Locale, ResourceBundle} import de.thm.move.Global import scala.collection.JavaConverters._ class CustomResourceBundle(files:List[String], locale:Locale) extends ResourceBundle { val bundles = for(file <- files) yield ResourceBundle.getBundle(file, locale) override def getKeys: util.Enumeration[String] = { val keyList = bundles.flatMap { x => x.keySet().asScala } val iterator = keyList.iterator new util.Enumeration[String] { override def hasMoreElements: Boolean = iterator.hasNext override def nextElement(): String = iterator.next } } override def handleGetObject(key: String): AnyRef = { bundles.find(_.containsKey(key)). map { bundle => //load localization as UTF-8 encoding if(bundle.getBaseBundleName.contains("i18n")) new String(bundle.getString(key).getBytes("ISO-8859-1"), Global.encoding) else //all other as ISO-8859-1 encoding bundle.getString(key) }.orNull } }
Example 11
Source File: profiling_report.scala From libisabelle with Apache License 2.0 | 5 votes |
package isabelle import java.util.Locale object Profiling_Report { def profiling_report(log_file: Build_Log.Log_File): List[(Long, String)] = { val Line = """^(?:### )?([ 0-9]{10}) (\S+|GARBAGE COLLECTION.*)$""".r val Count = """ *(\d+)""".r val clean = """-?\(\d+\).*$""".r var results = Map.empty[String, Long] for (Line(Count(Value.Long(count)), raw_fun) <- log_file.lines) { val fun = clean.replaceAllIn(raw_fun, "") results += (fun -> (results.getOrElse(fun, 0L) + count)) } for ((fun, count) <- results.toList.sortBy(_._2)) yield (count, fun) } val isabelle_tool = Isabelle_Tool("profiling_report", "report Poly/ML profiling information from log files", args => { Command_Line.tool0 { val getopts = Getopts(""" Usage: isabelle profiling_report [LOGS ...] Report Poly/ML profiling output from log files (potentially compressed). """) val log_names = getopts(args) for (name <- log_names) { val log_file = Build_Log.Log_File(Path.explode(name)) val results = for ((count, fun) <- profiling_report(log_file)) yield String.format(Locale.ROOT, "%14d %s", count.asInstanceOf[AnyRef], fun.asInstanceOf[AnyRef]) if (results.nonEmpty) Output.writeln(cat_lines((log_file.name + ":") :: results)) } } }) }
Example 12
Source File: color_value.scala From libisabelle with Apache License 2.0 | 5 votes |
package isabelle import java.awt.Color import java.util.Locale object Color_Value { private var cache = Map.empty[String, Color] def parse(s: String): Color = { val i = java.lang.Long.parseLong(s, 16) val r = ((i >> 24) & 0xFF).toInt val g = ((i >> 16) & 0xFF).toInt val b = ((i >> 8) & 0xFF).toInt val a = (i & 0xFF).toInt new Color(r, g, b, a) } def print(c: Color): String = { val r = new java.lang.Integer(c.getRed) val g = new java.lang.Integer(c.getGreen) val b = new java.lang.Integer(c.getBlue) val a = new java.lang.Integer(c.getAlpha) Word.uppercase(String.format(Locale.ROOT, "%02x%02x%02x%02x", r, g, b, a)) } def apply(s: String): Color = synchronized { cache.get(s) match { case Some(c) => c case None => val c = parse(s) cache += (s -> c) c } } }
Example 13
Source File: timing.scala From libisabelle with Apache License 2.0 | 5 votes |
package isabelle import java.util.Locale object Timing { val zero: Timing = Timing(Time.zero, Time.zero, Time.zero) def timeit[A]( message: String = "", enabled: Boolean = true, output: String => Unit = Output.warning(_))(e: => A): A = { if (enabled) { val start = Time.now() val result = Exn.capture(e) val stop = Time.now() val timing = stop - start if (timing.is_relevant) { output( (if (message == null || message == "") "" else message + ": ") + timing.message + " elapsed time") } Exn.release(result) } else e } } sealed case class Timing(elapsed: Time, cpu: Time, gc: Time) { def is_zero: Boolean = elapsed.is_zero && cpu.is_zero && gc.is_zero def is_relevant: Boolean = elapsed.is_relevant || cpu.is_relevant || gc.is_relevant def resources: Time = cpu + gc def factor: Option[Double] = { val t1 = elapsed.seconds val t2 = resources.seconds if (t1 >= 3.0 && t2 >= 3.0) Some(t2 / t1) else None } def + (t: Timing): Timing = Timing(elapsed + t.elapsed, cpu + t.cpu, gc + t.gc) def message: String = elapsed.message + " elapsed time, " + cpu.message + " cpu time, " + gc.message + " GC time" def message_resources: String = { val factor_text = factor match { case Some(f) => String.format(Locale.ROOT, ", factor %.2f", new java.lang.Double(f)) case None => "" } if (resources.seconds >= 3.0) elapsed.message_hms + " elapsed time, " + resources.message_hms + " cpu time" + factor_text else elapsed.message_hms + " elapsed time" + factor_text } override def toString: String = message }
Example 14
Source File: profiling_report.scala From libisabelle with Apache License 2.0 | 5 votes |
package isabelle import java.util.Locale object Profiling_Report { def profiling_report(log_file: Build_Log.Log_File): List[(Long, String)] = { val Line = """^(?:### )?([ 0-9]{10}) (\S+|GARBAGE COLLECTION.*)$""".r val Count = """ *(\d+)""".r val clean = """-?\(\d+\).*$""".r var results = Map.empty[String, Long] for (Line(Count(Value.Long(count)), raw_fun) <- log_file.lines) { val fun = clean.replaceAllIn(raw_fun, "") results += (fun -> (results.getOrElse(fun, 0L) + count)) } for ((fun, count) <- results.toList.sortBy(_._2)) yield (count, fun) } val isabelle_tool = Isabelle_Tool("profiling_report", "report Poly/ML profiling information from log files", args => { Command_Line.tool0 { val getopts = Getopts(""" Usage: isabelle profiling_report [LOGS ...] Report Poly/ML profiling output from log files (potentially compressed). """) val log_names = getopts(args) for (name <- log_names) { val log_file = Build_Log.Log_File(Path.explode(name)) val results = for ((count, fun) <- profiling_report(log_file)) yield String.format(Locale.ROOT, "%14d %s", count.asInstanceOf[AnyRef], fun.asInstanceOf[AnyRef]) if (results.nonEmpty) Output.writeln(cat_lines((log_file.name + ":") :: results)) } } }) }
Example 15
Source File: LocaleDependent.scala From Scalaprof with GNU General Public License v2.0 | 5 votes |
package edu.neu.coe.csye._7200 package scaladate import java.util.{Date,Locale} import java.text.DateFormat import java.text.DateFormat._ trait LocaleDependent { def toStringForLocale(implicit locale: Locale): String } case class ScalaDate(date: Date) extends LocaleDependent { import ScalaDate.locale def toStringForLocale(implicit locale: Locale): String = getDateInstance(LONG,locale) format date override def toString: String = toStringForLocale(locale) } object ScalaDate { def apply(): ScalaDate = ScalaDate(new Date) implicit def locale = Locale.FRANCE def main(args: Array[String]): Unit = { println(apply()) } }
Example 16
Source File: Enum.scala From scruid with Apache License 2.0 | 5 votes |
package ing.wbaa.druid // DO NOT REMOVE: required for scala 2.11 import cats.syntax.either._ import io.circe._ import io.circe.syntax._ trait Enum { override lazy val toString: String = this.getClass.getSimpleName.split("\\$")(0) } trait EnumCodec[T <: Enum with EnumStringEncoder] { val values: Set[T] def decode(input: String): Either[NoSuchElementException, T] = values.find { enum => enum.encode == input } match { case Some(value) => Right(value) case None => val transformedValues = values.map(v => v.encode).mkString("[", ",", "]") Left(new NoSuchElementException(s"'$input' is not a valid value in $transformedValues")) } implicit val encoder: Encoder[T] = new Encoder[T] { final def apply(t: T): Json = t.encode.asJson } implicit val decoder: Decoder[T] = new Decoder[T] { final def apply(c: HCursor): Decoder.Result[T] = for { enum <- c.as[String] } yield { decode(enum) match { case Left(e) => throw e case Right(t) => t } } } } trait EnumStringEncoder { this: Enum => def encode(): String } trait UpperCaseEnumStringEncoder extends EnumStringEncoder { this: Enum => def encode(): String = toString.toUpperCase } trait LowerCaseEnumStringEncoder extends EnumStringEncoder { this: Enum => def encode(): String = toString.toLowerCase } trait CamelCaseEnumStringEncoder extends EnumStringEncoder { this: Enum => private def decapitalize(input: String) = s"${input.head.toLower}${input.tail}" def encode(): String = decapitalize(toString) } trait LispCaseEnumStringEncoder extends EnumStringEncoder { this: Enum => def encode(): String = DelimiterSeparatedEnumEncoder("-").encode(toString) } trait SnakeCaseEnumStringEncoder extends EnumStringEncoder { this: Enum => def encode(): String = DelimiterSeparatedEnumEncoder("_").encode(toString) } case class DelimiterSeparatedEnumEncoder(delimiter: String) { import java.util.Locale private val PASS1 = """([A-Z]+)([A-Z][a-z])""".r private val PASS2 = """([a-z\d])([A-Z])""".r private val REPLACEMENT = "$1" + delimiter + "$2" def encode(input: String): String = PASS2.replaceAllIn(PASS1.replaceAllIn(input, REPLACEMENT), REPLACEMENT).toLowerCase(Locale.US) }
Example 17
Source File: JbrBintrayResolver.scala From sbt-idea-plugin with Apache License 2.0 | 5 votes |
package org.jetbrains.sbtidea.download.jbr import java.net.URL import java.nio.file.Path import java.util.{Locale, Properties} import org.jetbrains.sbtidea.download.api.Resolver import org.jetbrains.sbtidea.download.jbr.JbrDependency.VERSION_AUTO import org.jetbrains.sbtidea.packaging.artifact.using import org.jetbrains.sbtidea.{pathToPathExt, PluginLogger => log, _} import sbt._ class JbrBintrayResolver extends Resolver[JbrDependency] { import JbrBintrayResolver._ override def resolve(dep: JbrDependency): Seq[JbrArtifact] = { getJbrVersion(dep) .flatMap(buildJbrDlUrl) .map(url => JbrArtifact(dep, url)) .toSeq } private[jbr] def buildJbrDlUrl(version: String): Option[URL] = splitVersion(version).flatMap { case (major, minor) => Some(new URL(s"$BASE_URL/jbr-$major-$platform-$arch-b$minor.tar.gz")) case _ => log.error(s"Unexpected version format from $version") None } private[jbr] def getJbrVersion(dep: JbrDependency): Option[String] = dep.buildInfo.jbrVersion match { case Some(VERSION_AUTO) => extractVersionFromIdea(dep.ideaRoot) case otherVersion@Some(_) => otherVersion case None => None } private def platform: String = System.getProperty("os.name", "").toLowerCase(Locale.ENGLISH) match { case value if value.startsWith("win") => "windows" case value if value.startsWith("lin") => "linux" case value if value.startsWith("mac") => "osx" case other => log.error(s"Unsupported jbr os: $other"); "" } private def arch: String = System.getProperty("os.arch") match { case "x86" => "x86" case _ => "x64" } private[jbr] def extractVersionFromIdea(ideaInstallationDir: Path): Option[String] = { val dependenciesFile = ideaInstallationDir / "dependencies.txt" val props = new Properties() using(dependenciesFile.inputStream)(props.load) props.getProperty("jdkBuild").lift2Option } } object JbrBintrayResolver { val BASE_URL = "https://cache-redirector.jetbrains.com/jetbrains.bintray.com/intellij-jbr" def splitVersion(version: String): Option[(String, String)] = { val lastIndexOfB = version.lastIndexOf('b') if (lastIndexOfB > -1) Some(version.substring(0, lastIndexOfB) -> version.substring(lastIndexOfB + 1)) else { log.error(s"Malformed jbr version: $version") None } } }
Example 18
Source File: HiveAcidAutoConvert.scala From spark-acid with Apache License 2.0 | 5 votes |
package com.qubole.spark.hiveacid import java.util.Locale import com.qubole.spark.datasources.hiveacid.sql.execution.SparkAcidSqlParser import org.apache.spark.sql.{SparkSession, SparkSessionExtensions} import org.apache.spark.sql.catalyst.catalog.HiveTableRelation import org.apache.spark.sql.catalyst.plans.logical.{Filter, InsertIntoTable, LogicalPlan} import org.apache.spark.sql.catalyst.rules.Rule import org.apache.spark.sql.execution.command.DDLUtils import org.apache.spark.sql.execution.datasources.LogicalRelation import com.qubole.spark.hiveacid.datasource.HiveAcidDataSource case class HiveAcidAutoConvert(spark: SparkSession) extends Rule[LogicalPlan] { private def isConvertible(relation: HiveTableRelation): Boolean = { val serde = relation.tableMeta.storage.serde.getOrElse("").toLowerCase(Locale.ROOT) relation.tableMeta.properties.getOrElse("transactional", "false").toBoolean } private def convert(relation: HiveTableRelation): LogicalRelation = { val options = relation.tableMeta.properties ++ relation.tableMeta.storage.properties ++ Map("table" -> relation.tableMeta.qualifiedName) val newRelation = new HiveAcidDataSource().createRelation(spark.sqlContext, options) LogicalRelation(newRelation, isStreaming = false) } override def apply(plan: LogicalPlan): LogicalPlan = { plan resolveOperators { // Write path case InsertIntoTable(r: HiveTableRelation, partition, query, overwrite, ifPartitionNotExists) if query.resolved && DDLUtils.isHiveTable(r.tableMeta) && isConvertible(r) => InsertIntoTable(convert(r), partition, query, overwrite, ifPartitionNotExists) // Read path case relation: HiveTableRelation if DDLUtils.isHiveTable(relation.tableMeta) && isConvertible(relation) => convert(relation) } } } class HiveAcidAutoConvertExtension extends (SparkSessionExtensions => Unit) { def apply(extension: SparkSessionExtensions): Unit = { extension.injectResolutionRule(HiveAcidAutoConvert.apply) extension.injectParser { (session, parser) => SparkAcidSqlParser(parser) } } }
Example 19
Source File: Global.scala From MoVE with Mozilla Public License 2.0 | 5 votes |
package de.thm.move import java.net.URL import java.nio.charset.Charset import java.nio.file.{Files, Path, Paths} import java.util.{Locale, ResourceBundle} import de.thm.move.config.{Config, ConfigLoader} import de.thm.move.history.History import de.thm.move.shortcuts.ShortCutHandler import de.thm.move.util.CustomResourceBundle object Global { private val configDirectoryName = ".move" private val configDirPath = Paths.get(System.getProperty("user.home"), configDirectoryName) def zippedUndo[A, B](xs:List[A])( fn: A => B)( exec: A => Unit, undo: A => B => Unit): Unit = { val zipped = xs zip xs.map(fn) history.execute { xs.foreach(exec) } { zipped.foreach { case (a,b) => undo(a)(b) } } } }
Example 20
Source File: ExampleSwagger.scala From typed-schema with Apache License 2.0 | 5 votes |
package ru.tinkoff.tschema.example import java.util.Locale import com.twitter.finagle.http.Response import ru.tinkoff.tschema.example.Server.{getClass, modules} import ru.tinkoff.tschema.examples.SwaggerIndex import ru.tinkoff.tschema.finagle.{Rejection, Routed} import ru.tinkoff.tschema.finagle.util.message import ru.tinkoff.tschema.finagle.envRouting.Rejected import ru.tinkoff.tschema.swagger.{OpenApiInfo, PathDescription} import io.circe.syntax._ import cats.instances.list._ import cats.syntax.foldable._ import cats.syntax.semigroupk._ import io.circe.Printer import monix.eval.Task import tofu.env.Env object ExampleSwagger { private implicit val printer: Printer = Printer.spaces2.copy(dropNullValues = true) private val swaggerHttp: Http[Response] = { val response = message.stringResponse(SwaggerIndex.index.render) response.setContentType("text/html(UTF-8)") Routed.checkPath[Http, Response]("/swagger.php", Http.pure(response)) } private def resource(name: String): Http[Response] = Env.fromTask( Task.delay { val BufSize = 1024 val response = Response() val stream = getClass.getResourceAsStream(name) val arr = Array.ofDim[Byte](BufSize) def readAll(): Unit = stream.read(arr) match { case BufSize => response.write(arr) readAll() case size if size > 0 => response.write(arr.slice(0, size)) readAll() case _ => } readAll() response }.executeOn(resources) .onErrorHandleWith(_ => Task.raiseError(Rejected(Rejection.notFound)))) private val swaggerResources: Http[Response] = Routed.path[Http].map(_.toString).flatMap { case s if s.startsWith("/webjars") => resource("/META-INF/resources" + s) case _ => Routed.reject[Http, Response](Rejection.notFound) } private val swaggerJson: Http[Response] = { val swagger = modules.foldMap(_.swag) val descriptions = PathDescription.utf8I18n("swagger", Locale.forLanguageTag("ru")) val json = swagger.describe(descriptions).make(OpenApiInfo()).asJson.pretty(printer) val response = message.jsonResponse(json) Routed.checkPath[Http, Response]("/swagger", Env.pure(response)) } val route: Http[Response] = swaggerResources <+> swaggerHttp <+> swaggerJson }
Example 21
Source File: Swagger.scala From typed-schema with Apache License 2.0 | 5 votes |
package ru.tinkoff.tschema.example import java.util.Locale import cats.Monad import com.twitter.finagle.http.Response import ru.tinkoff.tschema.example.Server.{getClass, modules} import ru.tinkoff.tschema.examples.SwaggerIndex import ru.tinkoff.tschema.finagle.{Rejection, Routed, RoutedPlus} import ru.tinkoff.tschema.finagle.util.message import ru.tinkoff.tschema.finagle.routing.Rejected import ru.tinkoff.tschema.swagger.{OpenApiInfo, PathDescription} import io.circe.syntax._ import cats.implicits._ import io.circe.Printer import monix.eval.Task import tofu.env.Env final case class Swagger[H[_]: RoutedPlus: Monad] { private implicit val printer: Printer = Printer.spaces2.copy(dropNullValues = true) private val swaggerHttp: H[Response] = { val response = message.stringResponse(SwaggerIndex.index.render) response.setContentType("text/html(UTF-8)") Routed.checkPath[H, Response]("/swagger.php", response.pure[H]) } private def resource(name: String): H[Response] = Env.fromTask( Task.delay { val BufSize = 1024 val response = Response() val stream = getClass.getResourceAsStream(name) val arr = Array.ofDim[Byte](BufSize) def readAll(): Unit = stream.read(arr) match { case BufSize => response.write(arr) readAll() case size if size > 0 => response.write(arr.slice(0, size)) readAll() case _ => } readAll() response }.executeOn(resources) .onErrorHandleWith(_ => Task.raiseError(Rejected(Rejection.notFound)))) private val swaggerResources: H[Response] = Routed.path[H].map(_.toString).flatMap { case s if s.startsWith("/webjars") => resource("/META-INF/resources" + s) case _ => Routed.reject[H, Response](Rejection.notFound) } private val swaggerJson: H[Response] = { val swagger = modules.foldMap(_.swag) val descriptions = PathDescription.utf8I18n("swagger", Locale.forLanguageTag("ru")) val json = swagger.describe(descriptions).make(OpenApiInfo()).asJson.pretty(printer) val response = message.jsonResponse(json) Routed.checkPath[H, Response]("/swagger", response.pure[H]) } val route: H[Response] = swaggerResources <+> swaggerHttp <+> swaggerJson }
Example 22
Source File: TestServer.scala From typed-schema with Apache License 2.0 | 5 votes |
package ru.tinkoff.tschema.examples import java.util.Locale import akka.actor.ActorSystem import akka.http.scaladsl.Http import akka.http.scaladsl.model.{ContentTypes, HttpEntity, HttpResponse} import akka.http.scaladsl.server.Directives.{complete, get, pathPrefix, _} import akka.stream.ActorMaterializer import cats.instances.list._ import cats.syntax.foldable._ import de.heikoseeberger.akkahttpcirce.FailFastCirceSupport._ import io.circe.Printer import ru.tinkoff.tschema.swagger.{OpenApiInfo, PathDescription} object TestServer { implicit val system = ActorSystem() implicit val mat = ActorMaterializer() import system.dispatcher val descriptions = PathDescription.utf8I18n("swagger", Locale.forLanguageTag("ru")) val modules = List[ExampleModule]( TestModule, VersionModule, FiltersModule, FormFieldsModule, Authorize, CustomAuth, MultiParameters, ProxyModule ).combineAll private[this] implicit val printer: Printer = Printer.noSpaces.copy(dropNullValues = true) val route = pathPrefix("api") { modules.route } ~ path("swagger")( get( complete( modules.swag .describe(descriptions) .make(OpenApiInfo()) .addServer("/api") ) ) ) ~ pathPrefix("webjars")( getFromResourceDirectory("META-INF/resources/webjars") ) ~ path("swagger.php")( complete( HttpResponse( entity = HttpEntity( contentType = ContentTypes.`text/html(UTF-8)`, string = SwaggerIndex.index.render ) ) ) ) def main(args: Array[String]): Unit = { for (_ <- Http().bindAndHandle(route, "localhost", 8081)) println("server started at http://localhost:8081/swagger.php") } }
Example 23
Source File: ExampleSwagger.scala From typed-schema with Apache License 2.0 | 5 votes |
package ru.tinkoff.tschema.example import java.util.Locale import com.twitter.finagle.http.Response import ru.tinkoff.tschema.example.Server.{getClass, modules} import ru.tinkoff.tschema.examples.SwaggerIndex import ru.tinkoff.tschema.finagle.{Rejection, Routed} import ru.tinkoff.tschema.finagle.util.message import ru.tinkoff.tschema.finagle.zioRouting.Fail.Rejected import ru.tinkoff.tschema.swagger.{OpenApiInfo, PathDescription} import zio.ZIO import zio.blocking.blocking import io.circe.syntax._ import cats.instances.list._ import cats.syntax.foldable._ import cats.syntax.semigroupk._ import io.circe.Printer object ExampleSwagger { private implicit val printer: Printer = Printer.spaces2.copy(dropNullValues = true) private val swaggerHttp: Http[Response] = { val response = message.stringResponse(SwaggerIndex.index.render) response.setContentType("text/html(UTF-8)") Routed.checkPath[Http, Response]("/swagger.php", ZIO.succeed(response)) } private def resource(name: String): Http[Response] = blocking(ZIO { val BufSize = 1024 val response = Response() val stream = getClass.getResourceAsStream(name) val arr = Array.ofDim[Byte](BufSize) def readAll(): Unit = stream.read(arr) match { case BufSize => response.write(arr) readAll() case size if size > 0 => response.write(arr.slice(0, size)) readAll() case _ => } readAll() response }).catchAll(_ => ZIO.fail(Rejected(Rejection.notFound))) private val swaggerResources: Http[Response] = Routed.path[Http].map(_.toString).flatMap { case s if s.startsWith("/webjars") => resource("/META-INF/resources" + s) case _ => Routed.reject[Http, Response](Rejection.notFound) } private val swaggerJson: Http[Response] = { val swagger = modules.foldMap(_.swag) val descriptions = PathDescription.utf8I18n("swagger", Locale.forLanguageTag("ru")) val json = swagger.describe(descriptions).make(OpenApiInfo()).asJson.pretty(printer) val response = message.jsonResponse(json) Routed.checkPath[Http, Response]("/swagger", ZIO.succeed(response)) } val route: Http[Response] = swaggerResources <+> swaggerHttp <+> swaggerJson }
Example 24
Source File: UTF8ResourceBundle.scala From typed-schema with Apache License 2.0 | 5 votes |
package ru.tinkoff.tschema.utils import java.io.InputStreamReader import java.nio.charset.StandardCharsets import java.util.{Locale, PropertyResourceBundle, ResourceBundle} object UTF8ResourceBundle { private[this] object Control extends ResourceBundle.Control { override def newBundle( baseName: String, locale: Locale, format: String, loader: ClassLoader, reload: Boolean ): ResourceBundle = { val bundleName = toBundleName(baseName, locale) val resourceName = toResourceName(bundleName, "properties") def reloadStream = for { url <- Option(loader.getResource(resourceName)) connection <- Option(url.openConnection()) } yield { connection.setUseCaches(false) connection.getInputStream } val stream = if (reload) reloadStream else Option(loader.getResourceAsStream(resourceName)) stream.map { stream => try { new PropertyResourceBundle(new InputStreamReader(stream, StandardCharsets.UTF_8)) } finally { stream.close() } }.orNull } } def apply(bundleName: String, locale: Locale): ResourceBundle = ResourceBundle.getBundle(bundleName, locale, Control) }
Example 25
Source File: PathDescription.scala From typed-schema with Apache License 2.0 | 5 votes |
package ru.tinkoff.tschema.swagger import java.util.{Locale, ResourceBundle} import cats.syntax.option._ import ru.tinkoff.tschema.utils.UTF8ResourceBundle object PathDescription { type DescriptionMap = Target => Option[SwaggerDescription] def i18n(bundle: ResourceBundle): DescriptionMap = { def readKey(name: String) = if (bundle.containsKey(name)) bundle.getString(name).some else None { case Target.Tag(key) => readKey(s"@$key") case Target.Method(key, sub) => sub match { case MethodTarget.Path => readKey(key) case MethodTarget.Body => readKey(s"$key.body") case MethodTarget.Summary => readKey(s"$key.summary") case MethodTarget.Param(name) => readKey(s"$key.$name") case MethodTarget.Status(code) => readKey(s"$key.$code") } case Target.Type(name, sub) => sub match { case TypeTarget.Type => readKey(s"~$name") case TypeTarget.Title => readKey(s"~$name~") case TypeTarget.Field(field) => readKey(s"~$name~$field") } } } def utf8I18n(name: String, locale: Locale = Locale.getDefault) = i18n(UTF8ResourceBundle(name, locale)) sealed trait Target object Target { final case class Method(name: String, sub: MethodTarget) extends Target final case class Tag(name: String) extends Target final case class Type(name: String, sub: TypeTarget) extends Target implicit class DescriptionOps(val descriptionMap: DescriptionMap) extends AnyVal { def method(key: String): MethodTarget => Option[SwaggerDescription] = sub => descriptionMap(Method(key, sub)) def typ(key: String): TypeTarget => Option[SwaggerDescription] = sub => descriptionMap(Type(key, sub)) } } sealed trait MethodTarget object MethodTarget { case object Path extends MethodTarget case object Body extends MethodTarget case object Summary extends MethodTarget final case class Param(name: String) extends MethodTarget final case class Status(code: Int) extends MethodTarget } sealed trait TypeTarget object TypeTarget { case object Type extends TypeTarget case object Title extends TypeTarget final case class Field(name: String) extends TypeTarget } }
Example 26
Source File: TypeCast.scala From spark-google-spreadsheets with Apache License 2.0 | 5 votes |
package com.github.potix2.spark.google.spreadsheets.util import java.math.BigDecimal import java.sql.{Date, Timestamp} import java.text.NumberFormat import java.util.Locale import org.apache.spark.sql.types._ import scala.util.Try object TypeCast { private[spreadsheets] def castTo( datum: String, castType: DataType, nullable: Boolean = true ): Any = { castType match { case _: ByteType => datum.toByte case _: ShortType => datum.toShort case _: IntegerType => datum.toInt case _: LongType => datum.toLong case _: FloatType => Try(datum.toFloat) .getOrElse(NumberFormat.getInstance(Locale.getDefault()).parse(datum).floatValue()) case _: DoubleType => Try(datum.toFloat) .getOrElse(NumberFormat.getInstance(Locale.getDefault()).parse(datum).doubleValue()) case _: BooleanType => datum.toBoolean case _: DecimalType => new BigDecimal(datum.replaceAll(",", "")) case _: TimestampType => Timestamp.valueOf(datum) case _: DateType => Date.valueOf(datum) case _: StringType => datum case _ => throw new RuntimeException(s"Unsupported type: ${castType.typeName}") } } }
Example 27
Source File: MappingValidator.scala From BacklogMigration-Redmine with MIT License | 5 votes |
package com.nulabinc.backlog.r2b.mapping.file import java.util.Locale import com.nulabinc.backlog.r2b.mapping.domain.Mapping import com.osinka.i18n.{Lang, Messages} private[file] class MappingValidator(redmineMappings: Seq[MappingItem], backlogMappings: Seq[MappingItem], itemName: String) { implicit val userLang = if (Locale.getDefault.equals(Locale.JAPAN)) Lang("ja") else Lang("en") val CHECK_REDMINE = "CHECK_REDMINE" val CHECK_BACKLOG = "CHECK_BACKLOG" def validate(optMappings: Option[Seq[Mapping]]): Seq[String] = { optMappings match { case Some(mappings) => itemsExists(mappings, CHECK_REDMINE) concat itemsRequired(mappings, CHECK_REDMINE) concat itemsExists(mappings, CHECK_BACKLOG) concat itemsRequired(mappings, CHECK_BACKLOG) case _ => throw new RuntimeException } } private[this] def itemsExists(mappings: Seq[Mapping], checkService: String): Seq[String] = { mappings.foldLeft(Seq.empty[String])((errors: Seq[String], mapping: Mapping) => if (checkService == CHECK_REDMINE) { itemExists(mapping.redmine, redmineMappings, Messages("common.redmine")) match { case Some(error) => errors :+ error case None => errors } } else { itemExists(mapping.backlog, backlogMappings, Messages("common.backlog")) match { case Some(error) => errors :+ error case None => errors } }) } private[this] def itemExists(value: String, mappingItems: Seq[MappingItem], serviceName: String): Option[String] = { if (value.nonEmpty && !mappingItems.exists(_.name == value)) { Some(s"- ${Messages("cli.mapping.error.not_exist.item", itemName, value, serviceName)}") } else None } private[this] def itemsRequired(mappings: Seq[Mapping], checkService: String): Seq[String] = { mappings.foldLeft(Seq.empty[String])((errors: Seq[String], mapping: Mapping) => { itemRequired(mapping, checkService) match { case Some(error) => errors :+ error case None => errors } }) } private[this] def itemRequired(mapping: Mapping, checkService: String): Option[String] = { if (checkService == CHECK_REDMINE) { if (mapping.redmine.isEmpty) Some(s"- ${Messages("cli.mapping.error.empty.item", Messages("common.backlog"), itemName, mapping.backlog)}") else None } else { if (mapping.backlog.isEmpty) Some(s"- ${Messages("cli.mapping.error.empty.item", Messages("common.redmine"), itemName, mapping.redmine)}") else None } } }
Example 28
Source File: UpdatableDisplay.scala From almond with BSD 3-Clause "New" or "Revised" License | 5 votes |
package almond.display import java.util.{Locale, UUID} import java.util.concurrent.atomic.AtomicInteger import almond.interpreter.api.{DisplayData, OutputHandler} trait UpdatableDisplay extends Display { def displayId: String override def displayData(): DisplayData = DisplayData(data(), metadata = metadata(), idOpt = Some(displayId)) protected def emptyDisplayData(): DisplayData = { val data = displayData() data.copy(data = data.data.mapValues(_ => "").toMap) } def update()(implicit output: OutputHandler): Unit = output.updateDisplay(displayData()) def clear()(implicit output: OutputHandler): Unit = output.updateDisplay(emptyDisplayData()) } object UpdatableDisplay { def useRandomIds(): Boolean = sys.props .get("almond.ids.random") .forall(s => s == "1" || s.toLowerCase(Locale.ROOT) == "true") private val idCounter = new AtomicInteger private val divCounter = new AtomicInteger def generateId(): String = if (useRandomIds()) UUID.randomUUID().toString else idCounter.incrementAndGet().toString def generateDiv(prefix: String = "data-"): String = prefix + { if (useRandomIds()) UUID.randomUUID().toString else divCounter.incrementAndGet().toString } }
Example 29
Source File: Level.scala From almond with BSD 3-Clause "New" or "Revised" License | 5 votes |
package almond.logger import java.util.Locale sealed abstract class Level(val index: Int, val name: String) extends Product with Serializable with Ordered[Level] { def compare(that: Level): Int = index.compare(that.index) def errorEnabled: Boolean = this >= Level.Error def warningEnabled: Boolean = this >= Level.Warning def infoEnabled: Boolean = this >= Level.Info def debugEnabled: Boolean = this >= Level.Debug } object Level { case object None extends Level(0, "NONE") case object Error extends Level(1, "ERROR") case object Warning extends Level(2, "WARN") case object Info extends Level(3, "INFO") case object Debug extends Level(4, "DEBUG") def fromString(s: String): Either[String, Level] = s.toLowerCase(Locale.ROOT) match { case "none" => Right(None) case "error" => Right(Error) case "warn" | "warning" => Right(Warning) case "info" => Right(Info) case "debug" => Right(Debug) case _ => Left(s"Unrecognized logging level: $s") } }
Example 30
Source File: CronGenerator.scala From lemon-schedule with GNU General Public License v2.0 | 5 votes |
package com.gabry.job.utils import java.time.temporal.ChronoField import java.time.{Instant, ZoneId, ZonedDateTime} import java.util.Locale import com.cronutils.descriptor.CronDescriptor import com.cronutils.model.CronType import com.cronutils.model.definition.CronDefinitionBuilder import com.cronutils.model.time.ExecutionTime import com.cronutils.parser.CronParser def isValid(cronExpression:String):Boolean = { try{ parser.parse(cronExpression) true }catch{ case ex:Exception => false } } }
Example 31
Source File: package.scala From modelmatrix with Apache License 2.0 | 5 votes |
package com.collective.modelmatrix import java.time.ZoneId import java.time.format.{FormatStyle, DateTimeFormatter} import java.util.Locale import com.bethecoder.ascii_table.{ASCIITableHeader, ASCIITable} import com.collective.modelmatrix.transform.{Index, Top, Identity, Transform} import scala.language.implicitConversions package object cli { val timeFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT) .withLocale(Locale.US) .withZone(ZoneId.systemDefault()) implicit def stringToASCIITableHeader(s: String): ASCIITableHeader = new ASCIITableHeader(s) implicit class StringOps(val s: String) extends AnyVal { def dataLeftAligned: ASCIITableHeader = new ASCIITableHeader(s, -1) } import scalaz.stream._ import scalaz.concurrent.Task implicit class ConcurrentProcess[O](val process: Process[Task, O]) { def concurrently[O2](concurrencyLevel: Int) (f: Channel[Task, O, O2]): Process[Task, O2] = { val actions = process. zipWith(f)((data, f) => f(data)) val nestedActions = actions.map(Process.eval) merge.mergeN(concurrencyLevel)(nestedActions) } } }
Example 32
Source File: AnyValCodec.scala From msgpack4z-core with MIT License | 5 votes |
import java.util.Locale object AnyValCodec { private[this] val types = "Boolean Byte Short Int Long Float Double".split(' ').toList private[this] val defdef = types.map { tpe => s" implicit def ${tpe.toLowerCase(Locale.ENGLISH)}Codec: MsgpackCodec[$tpe]" }.mkString("\n") private[this] val impl = types.map { tpe => s""" override final def ${tpe.toLowerCase(Locale.ENGLISH)}Codec: MsgpackCodec[$tpe] = MsgpackCodec.tryConst(_ pack$tpe _, _.unpack$tpe())""" }.mkString("\n") def generate(pack: String): String = { s"""package $pack // GENERATED CODE: DO NOT EDIT. trait AnyValCodec { $defdef } private[$pack] trait AnyValCodecImpl extends AnyValCodec { $impl } """ } }
Example 33
Source File: HiveAcidSinkOptionsSuite.scala From spark-acid with Apache License 2.0 | 5 votes |
package com.qubole.spark.hiveacid.streaming import java.util.Locale import com.qubole.spark.hiveacid.Table import org.apache.spark.sql.streaming.OutputMode class HiveAcidSinkOptionsSuite extends HiveAcidStreamingFunSuite { import HiveAcidSinkOptions._ test("bad sink options") { def testBadOptions(options: List[(String, String)])(expectedMsg: String): Unit = { val tableName = "tempTable" val tType = Table.orcFullACIDTable val cols = Map( ("value1","int"), ("value2", "int") ) val tableHive = new Table(DEFAULT_DBNAME, tableName, cols, tType, false) // creating table helper.recreate(tableHive) val errorMessage = intercept[IllegalArgumentException] { helper.runStreaming( tableHive.hiveTname, OutputMode.Append(), tableHive.getColMap.keys.toSeq, Range(1, 4), options) }.getMessage assert(errorMessage.toLowerCase(Locale.ROOT).contains(expectedMsg.toLowerCase(Locale.ROOT))) } testBadOptions(List(CLEANUP_DELAY_KEY -> "-2"))("Invalid value '-2' " + s"for option '$CLEANUP_DELAY_KEY', must be a positive integer") testBadOptions(List(COMPACT_INTERVAL_KEY -> "-5"))("Invalid value '-5' " + s"for option '$COMPACT_INTERVAL_KEY', must be a positive integer") testBadOptions(List(MIN_BATCHES_TO_RETAIN_KEY -> "-5"))("Invalid value '-5' " + s"for option '$MIN_BATCHES_TO_RETAIN_KEY', must be a positive integer") testBadOptions(List(LOG_DELETION_KEY -> "x"))("Invalid value 'x' " + s"for option '$LOG_DELETION_KEY', must be true or false") } }
Example 34
Source File: PastValidatorForOptionSpec.scala From bean-validation-scala with MIT License | 5 votes |
package com.tsukaby.bean_validation_scala import java.util.{Locale, Date, Calendar} import javax.validation.constraints.Past import org.joda.time.DateTime import scala.annotation.meta.field class PastValidatorForOptionSpec extends BaseSpec { private[this] case class TestBeanWithOptionCalendar( @(Past@field) value: Option[Calendar] ) private[this] case class TestBeanWithOptionDate( @(Past@field) value: Option[Date] ) private[this] case class TestBeanWithOptionDateTime( @(Past@field) value: Option[DateTime] ) val tomorrow = DateTime.now().plusDays(1) val yesterday = DateTime.now().minusDays(1) Seq( (TestBeanWithOptionCalendar(Some(tomorrow.toCalendar(Locale.getDefault))), 1), (TestBeanWithOptionCalendar(Some(yesterday.toCalendar(Locale.getDefault))), 0), (TestBeanWithOptionDate(Some(tomorrow.toDate)), 1), (TestBeanWithOptionDate(Some(yesterday.toDate)), 0), (TestBeanWithOptionDateTime(Some(tomorrow)), 1), (TestBeanWithOptionDateTime(Some(yesterday)), 0) ) foreach { case (bean, expected) => s"Check violations count. bean = $bean, count = $expected" >> { test(bean, expected) } } }
Example 35
Source File: FutureValidatorForOptionSpec.scala From bean-validation-scala with MIT License | 5 votes |
package com.tsukaby.bean_validation_scala import java.util.{Calendar, Date, Locale} import javax.validation.constraints.Future import org.joda.time.DateTime import scala.annotation.meta.field class FutureValidatorForOptionSpec extends BaseSpec { private[this] case class TestBeanWithOptionCalendar( @(Future@field) value: Option[Calendar] ) private[this] case class TestBeanWithOptionDate( @(Future@field) value: Option[Date] ) private[this] case class TestBeanWithOptionDateTime( @(Future@field) value: Option[DateTime] ) val yesterday = DateTime.now().minusDays(1) val tomorrow = DateTime.now().plusDays(1) Seq( (TestBeanWithOptionCalendar(Some(yesterday.toCalendar(Locale.getDefault))), 1), (TestBeanWithOptionCalendar(Some(tomorrow.toCalendar(Locale.getDefault))), 0), (TestBeanWithOptionDate(Some(yesterday.toDate)), 1), (TestBeanWithOptionDate(Some(tomorrow.toDate)), 0), (TestBeanWithOptionDateTime(Some(yesterday)), 1), (TestBeanWithOptionDateTime(Some(tomorrow)), 0) ) foreach { case (bean, expected) => s"Check violations count. bean = $bean, count = $expected" >> { test(bean, expected) } } }
Example 36
Source File: SQLMetrics.scala From drizzle-spark with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution.metric import java.text.NumberFormat import java.util.Locale import org.apache.spark.SparkContext import org.apache.spark.scheduler.AccumulableInfo import org.apache.spark.util.{AccumulatorContext, AccumulatorV2, Utils} class SQLMetric(val metricType: String, initValue: Long = 0L) extends AccumulatorV2[Long, Long] { // This is a workaround for SPARK-11013. // We may use -1 as initial value of the accumulator, if the accumulator is valid, we will // update it at the end of task and the value will be at least 0. Then we can filter out the -1 // values before calculate max, min, etc. private[this] var _value = initValue private var _zeroValue = initValue override def copy(): SQLMetric = { val newAcc = new SQLMetric(metricType, _value) newAcc._zeroValue = initValue newAcc } override def reset(): Unit = _value = _zeroValue override def merge(other: AccumulatorV2[Long, Long]): Unit = other match { case o: SQLMetric => _value += o.value case _ => throw new UnsupportedOperationException( s"Cannot merge ${this.getClass.getName} with ${other.getClass.getName}") } override def isZero(): Boolean = _value == _zeroValue override def add(v: Long): Unit = _value += v def +=(v: Long): Unit = _value += v override def value: Long = _value // Provide special identifier as metadata so we can tell that this is a `SQLMetric` later override def toInfo(update: Option[Any], value: Option[Any]): AccumulableInfo = { new AccumulableInfo( id, name, update, value, true, true, Some(AccumulatorContext.SQL_ACCUM_IDENTIFIER)) } } object SQLMetrics { private val SUM_METRIC = "sum" private val SIZE_METRIC = "size" private val TIMING_METRIC = "timing" def createMetric(sc: SparkContext, name: String): SQLMetric = { val acc = new SQLMetric(SUM_METRIC) acc.register(sc, name = Some(name), countFailedValues = false) acc } def stringValue(metricsType: String, values: Seq[Long]): String = { if (metricsType == SUM_METRIC) { val numberFormat = NumberFormat.getIntegerInstance(Locale.ENGLISH) numberFormat.format(values.sum) } else { val strFormat: Long => String = if (metricsType == SIZE_METRIC) { Utils.bytesToString } else if (metricsType == TIMING_METRIC) { Utils.msDurationToString } else { throw new IllegalStateException("unexpected metrics type: " + metricsType) } val validValues = values.filter(_ >= 0) val Seq(sum, min, med, max) = { val metric = if (validValues.isEmpty) { Seq.fill(4)(0L) } else { val sorted = validValues.sorted Seq(sorted.sum, sorted(0), sorted(validValues.length / 2), sorted(validValues.length - 1)) } metric.map(strFormat) } s"\n$sum ($min, $med, $max)" } } }
Example 37
Source File: CsvSink.scala From drizzle-spark with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.io.File import java.util.{Locale, Properties} import java.util.concurrent.TimeUnit import com.codahale.metrics.{CsvReporter, MetricRegistry} import org.apache.spark.SecurityManager import org.apache.spark.metrics.MetricsSystem private[spark] class CsvSink(val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val CSV_KEY_PERIOD = "period" val CSV_KEY_UNIT = "unit" val CSV_KEY_DIR = "directory" val CSV_DEFAULT_PERIOD = 10 val CSV_DEFAULT_UNIT = "SECONDS" val CSV_DEFAULT_DIR = "/tmp/" val pollPeriod = Option(property.getProperty(CSV_KEY_PERIOD)) match { case Some(s) => s.toInt case None => CSV_DEFAULT_PERIOD } val pollUnit: TimeUnit = Option(property.getProperty(CSV_KEY_UNIT)) match { case Some(s) => TimeUnit.valueOf(s.toUpperCase()) case None => TimeUnit.valueOf(CSV_DEFAULT_UNIT) } MetricsSystem.checkMinimalPollingPeriod(pollUnit, pollPeriod) val pollDir = Option(property.getProperty(CSV_KEY_DIR)) match { case Some(s) => s case None => CSV_DEFAULT_DIR } val reporter: CsvReporter = CsvReporter.forRegistry(registry) .formatFor(Locale.US) .convertDurationsTo(TimeUnit.MILLISECONDS) .convertRatesTo(TimeUnit.SECONDS) .build(new File(pollDir)) override def start() { reporter.start(pollPeriod, pollUnit) } override def stop() { reporter.stop() } override def report() { reporter.report() } }
Example 38
Source File: LogicalTypeProxy.scala From embulk-output-s3_parquet with MIT License | 5 votes |
package org.embulk.output.s3_parquet.parquet import java.time.ZoneId import java.util.Locale import org.apache.parquet.io.api.RecordConsumer import org.apache.parquet.schema.LogicalTypeAnnotation.TimeUnit import org.apache.parquet.schema.LogicalTypeAnnotation.TimeUnit.MILLIS import org.apache.parquet.schema.PrimitiveType import org.embulk.config.ConfigException import org.embulk.output.s3_parquet.catalog.GlueDataType import org.embulk.spi.Column import org.embulk.spi.time.{Timestamp, TimestampFormatter} import org.msgpack.value.Value object LogicalTypeProxy { private val DEFAULT_SCALE: Int = 0 private val DEFAULT_BID_WIDTH: Int = 64 private val DEFAULT_IS_SIGNED: Boolean = true private val DEFAULT_IS_ADJUSTED_TO_UTC: Boolean = true private val DEFAULT_TIME_UNIT: TimeUnit = MILLIS private val DEFAULT_TIME_ZONE: ZoneId = ZoneId.of("UTC") } case class LogicalTypeProxy( name: String, scale: Option[Int] = None, precision: Option[Int] = None, bitWidth: Option[Int] = None, isSigned: Option[Boolean] = None, isAdjustedToUtc: Option[Boolean] = None, timeUnit: Option[TimeUnit] = None, timeZone: Option[ZoneId] = None ) extends ParquetColumnType { private def getScale: Int = scale.getOrElse(LogicalTypeProxy.DEFAULT_SCALE) private def getPrecision: Int = precision.getOrElse { throw new ConfigException("\"precision\" must be set.") } private def getBidWith: Int = bitWidth.getOrElse(LogicalTypeProxy.DEFAULT_BID_WIDTH) private def getIsSigned: Boolean = isSigned.getOrElse(LogicalTypeProxy.DEFAULT_IS_SIGNED) private def getIsAdjustedToUtc: Boolean = isAdjustedToUtc.getOrElse(LogicalTypeProxy.DEFAULT_IS_ADJUSTED_TO_UTC) private def getTimeUnit: TimeUnit = timeUnit.getOrElse(LogicalTypeProxy.DEFAULT_TIME_UNIT) private def getTimeZone: ZoneId = timeZone.getOrElse(LogicalTypeProxy.DEFAULT_TIME_ZONE) lazy val logicalType: ParquetColumnType = { name.toUpperCase(Locale.ENGLISH) match { case "INT" => IntLogicalType(getBidWith, getIsSigned) case "TIMESTAMP" => TimestampLogicalType(getIsAdjustedToUtc, getTimeUnit, getTimeZone) case "TIME" => TimeLogicalType(getIsAdjustedToUtc, getTimeUnit, getTimeZone) case "DECIMAL" => DecimalLogicalType(getScale, getPrecision) case "DATE" => DateLogicalType case "JSON" => JsonLogicalType case _ => throw new ConfigException(s"Unsupported logical_type.name: $name.") } } override def primitiveType(column: Column): PrimitiveType = logicalType.primitiveType(column) override def glueDataType(column: Column): GlueDataType = logicalType.glueDataType(column) override def consumeBoolean(consumer: RecordConsumer, v: Boolean): Unit = logicalType.consumeBoolean(consumer, v) override def consumeString(consumer: RecordConsumer, v: String): Unit = logicalType.consumeString(consumer, v) override def consumeLong(consumer: RecordConsumer, v: Long): Unit = logicalType.consumeLong(consumer, v) override def consumeDouble(consumer: RecordConsumer, v: Double): Unit = logicalType.consumeDouble(consumer, v) override def consumeTimestamp( consumer: RecordConsumer, v: Timestamp, formatter: TimestampFormatter ): Unit = logicalType.consumeTimestamp(consumer, v, formatter) override def consumeJson(consumer: RecordConsumer, v: Value): Unit = logicalType.consumeJson(consumer, v) }
Example 39
Source File: package.scala From zio-metrics with Apache License 2.0 | 5 votes |
package zio.metrics.dropwizard import zio.{ Has, Layer, Task, ZLayer } import java.util.concurrent.TimeUnit import java.io.File import java.util.Locale import java.net.InetSocketAddress import java.util.concurrent.TimeUnit import org.slf4j.LoggerFactory import java.{ util => ju } import java.io.File package object reporters { import com.codahale.metrics.MetricRegistry import com.codahale.metrics.MetricFilter import com.codahale.metrics.graphite.Graphite import com.codahale.metrics.graphite.GraphiteReporter import com.codahale.metrics.ConsoleReporter import com.codahale.metrics.Slf4jReporter import com.codahale.metrics.CsvReporter import com.codahale.metrics.jmx.JmxReporter import com.codahale.metrics.Reporter type Reporters = Has[Reporters.Service] object Reporters { trait Service { def jmx(r: MetricRegistry): Task[JmxReporter] def console(r: MetricRegistry): Task[ConsoleReporter] def slf4j(r: MetricRegistry, duration: Int, unit: TimeUnit, loggerName: String): Task[Slf4jReporter] def csv(r: MetricRegistry, file: File, locale: Locale): Task[Reporter] def graphite(r: MetricRegistry, host: String, port: Int, prefix: String): Task[GraphiteReporter] } val live: Layer[Nothing, Reporters] = ZLayer.succeed(new Service { def jmx(r: MetricRegistry): zio.Task[JmxReporter] = Task(JmxReporter.forRegistry(r).build()) def console(r: MetricRegistry): Task[ConsoleReporter] = Task( ConsoleReporter .forRegistry(r) .convertRatesTo(TimeUnit.SECONDS) .convertDurationsTo(TimeUnit.MILLISECONDS) .build() ) def slf4j(r: MetricRegistry, duration: Int, unit: TimeUnit, loggerName: String): Task[Slf4jReporter] = Task( Slf4jReporter .forRegistry(r) .outputTo(LoggerFactory.getLogger(loggerName)) .convertRatesTo(TimeUnit.SECONDS) .convertDurationsTo(TimeUnit.MILLISECONDS) .build() ) def csv(r: MetricRegistry, file: File, locale: ju.Locale): zio.Task[Reporter] = Task( CsvReporter .forRegistry(r) .formatFor(locale) .convertRatesTo(TimeUnit.SECONDS) .convertDurationsTo(TimeUnit.MILLISECONDS) .build(file) ) def graphite(r: MetricRegistry, host: String, port: Int, prefix: String): zio.Task[GraphiteReporter] = Task { val graphite = new Graphite(new InetSocketAddress(host, port)) GraphiteReporter .forRegistry(r) .prefixedWith(prefix) .convertRatesTo(TimeUnit.SECONDS) .convertDurationsTo(TimeUnit.MILLISECONDS) .filter(MetricFilter.ALL) .build(graphite) } }) } }
Example 40
Source File: DataConverter.scala From spark-cdm with MIT License | 5 votes |
package com.microsoft.cdm.utils import java.text.SimpleDateFormat import java.util.{Locale, TimeZone} import java.sql.Timestamp import org.apache.commons.lang.time.DateUtils import org.apache.spark.sql.catalyst.util.TimestampFormatter import org.apache.spark.sql.types._ import org.apache.spark.unsafe.types.UTF8String class DataConverter() extends Serializable { val dateFormatter = new SimpleDateFormat(Constants.SINGLE_DATE_FORMAT) val timestampFormatter = TimestampFormatter(Constants.TIMESTAMP_FORMAT, TimeZone.getTimeZone("UTC")) val toSparkType: Map[CDMDataType.Value, DataType] = Map( CDMDataType.int64 -> LongType, CDMDataType.dateTime -> DateType, CDMDataType.string -> StringType, CDMDataType.double -> DoubleType, CDMDataType.decimal -> DecimalType(Constants.DECIMAL_PRECISION,0), CDMDataType.boolean -> BooleanType, CDMDataType.dateTimeOffset -> TimestampType ) def jsonToData(dt: DataType, value: String): Any = { return dt match { case LongType => value.toLong case DoubleType => value.toDouble case DecimalType() => Decimal(value) case BooleanType => value.toBoolean case DateType => dateFormatter.parse(value) case TimestampType => timestampFormatter.parse(value) case _ => UTF8String.fromString(value) } } def toCdmType(dt: DataType): CDMDataType.Value = { return dt match { case IntegerType => CDMDataType.int64 case LongType => CDMDataType.int64 case DateType => CDMDataType.dateTime case StringType => CDMDataType.string case DoubleType => CDMDataType.double case DecimalType() => CDMDataType.decimal case BooleanType => CDMDataType.boolean case TimestampType => CDMDataType.dateTimeOffset } } def dataToString(data: Any, dataType: DataType): String = { (dataType, data) match { case (_, null) => null case (DateType, _) => dateFormatter.format(data) case (TimestampType, v: Number) => timestampFormatter.format(data.asInstanceOf[Long]) case _ => data.toString } } }
Example 41
Source File: Status.scala From daf-semantics with Apache License 2.0 | 5 votes |
package it.almawave.kb.http.endpoints import java.time.LocalTime import io.swagger.annotations.Api import javax.ws.rs.Path import javax.ws.rs.GET import javax.ws.rs.Produces import io.swagger.annotations.ApiOperation import javax.ws.rs.core.MediaType import org.slf4j.LoggerFactory import javax.ws.rs.core.Context import javax.ws.rs.core.UriInfo import javax.ws.rs.core.Request import it.almawave.linkeddata.kb.utils.JSONHelper import java.time.LocalDateTime import java.time.ZonedDateTime import java.time.format.DateTimeFormatter import java.util.Locale import java.time.ZoneId @Api(tags = Array("catalog")) @Path("/status") class Status { private val logger = LoggerFactory.getLogger(this.getClass) @Context var uriInfo: UriInfo = null @GET @Produces(Array(MediaType.APPLICATION_JSON)) @ApiOperation(nickname = "status", value = "endpoint status") def status() = { val base_uri = uriInfo.getBaseUri val msg = s"the service is running at ${base_uri}" logger.info(msg) val _now = now() StatusMsg(_now._1, _now._2, msg) } def now() = { val zdt = ZonedDateTime.now(ZoneId.of("+1")) val dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ") (zdt.format(dtf), zdt) } } case class StatusMsg( now: String, dateTime: ZonedDateTime, msg: String )
Example 42
Source File: KafkaSink.scala From spark-kafka-sink with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.util.{ Properties, Locale } import java.util.concurrent.TimeUnit import org.slf4j.Logger import org.slf4j.LoggerFactory import com.codahale.metrics.MetricRegistry import org.apache.spark.SecurityManager import com.manyangled.kafkasink.KafkaReporter class KafkaSink(val properties: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends org.apache.spark.metrics.sink.Sink { val logger: Logger = LoggerFactory.getLogger(this.getClass) private def popt(prop: String): Option[String] = Option(properties.getProperty(prop)) // These are non-negotiable val broker = popt("broker").get val topic = popt("topic").get lazy val reporter = new KafkaReporter(registry, broker, topic, properties) def start(): Unit = { logger.info(s"Starting Kafka metric reporter at $broker, topic $topic") val period = popt("period").getOrElse("10").toLong val tstr = popt("unit").getOrElse("seconds").toUpperCase(Locale.ROOT) val tunit = TimeUnit.valueOf(tstr) reporter.start(period, tunit) } def stop(): Unit = { logger.info(s"Stopping Kafka metric reporter at $broker, topic $topic") reporter.stop() } def report(): Unit = { logger.info(s"Reporting metrics to Kafka reporter at $broker, topic $topic") reporter.report() } }
Example 43
Source File: TypeCast.scala From spark-select with Apache License 2.0 | 5 votes |
package io.minio.spark.select.util import java.math.BigDecimal import java.sql.{Date, Timestamp} import java.text.{SimpleDateFormat, NumberFormat} import java.util.Locale import org.apache.spark.sql.types._ import scala.util.Try @throws[IllegalArgumentException] private[select] def toChar(str: String): Char = { if (str.charAt(0) == '\\') { str.charAt(1) match { case 't' => '\t' case 'r' => '\r' case 'b' => '\b' case 'f' => '\f' case '\"' => '\"' // In case user changes quote char and uses \" as delimiter in options case '\'' => '\'' case 'u' if str == """\u0000""" => '\u0000' case _ => throw new IllegalArgumentException(s"Unsupported special character for delimiter: $str") } } else if (str.length == 1) { str.charAt(0) } else { throw new IllegalArgumentException(s"Delimiter cannot be more than one character: $str") } } }
Example 44
Source File: DateValues.scala From avoin-voitto with MIT License | 5 votes |
package liigavoitto.journalist.values import java.util.Locale import liigavoitto.scores.Match import org.joda.time.format.DateTimeFormat trait DateValues { implicit val mtch: Match implicit val lang: String private lazy val locale = lang match { case "fi" => new Locale("fi", "FI") case "sv" => new Locale("sv", "SE") } private lazy val formatter = DateTimeFormat.forPattern("EEEE").withLocale(locale) lazy val day = mtch.date.toString(formatter) }
Example 45
Source File: constants.scala From Converter with GNU General Public License v3.0 | 5 votes |
package org.scalablytyped.converter.internal import java.net.URI import java.time.ZoneId import java.time.format.DateTimeFormatter import java.util.Locale import org.scalablytyped.converter.internal.environment.OpSystem import scala.io.Codec object constants { val defaultCacheFolder: os.Path = environment.OS match { case OpSystem.MAC => os.home / "Library" / "Caches" / "ScalablyTyped" case OpSystem.WINDOWS => os.home / "AppData" / "Local" / "ScalablyTyped" case OpSystem.LINUX => os.home / ".cache" / "scalablytyped" case OpSystem.UNKNOWN => os.home / ".cache" / "scalablytyped" // By default, Linux cache folder } val defaultLocalPublishFolder: os.Path = os.home / ".ivy2" / "local" val DefinitelyTypedRepo = new URI("https://github.com/DefinitelyTyped/DefinitelyTyped.git") val ConverterRepo = new URI("https://github.com/ScalablyTyped/Converter.git") val isCi = sys.env.get("CIRCLECI").isDefined val TimeZone = ZoneId.of("UTC") val Utf8 = Codec.UTF8.charSet val DateTimePattern = DateTimeFormatter ofPattern "yyyyMMddhhmm" withLocale Locale.ENGLISH withZone TimeZone }
Example 46
Source File: LogDatetimeFormatter.scala From zio-logging with Apache License 2.0 | 5 votes |
package zio.logging import java.time.format.{ DateTimeFormatterBuilder, SignStyle } import java.time.temporal.ChronoField._ import java.util.Locale object LogDatetimeFormatter { val humanReadableDateTimeFormatter = new DateTimeFormatterBuilder() .parseCaseInsensitive() .appendValue(YEAR, 4, 10, SignStyle.EXCEEDS_PAD) .appendLiteral('-') .appendValue(MONTH_OF_YEAR, 2) .appendLiteral('-') .appendValue(DAY_OF_MONTH, 2) .appendLiteral(' ') .appendValue(HOUR_OF_DAY, 2) .appendLiteral(':') .appendValue(MINUTE_OF_HOUR, 2) .appendLiteral(':') .appendValue(SECOND_OF_MINUTE, 2) .appendLiteral('.') .appendValue(MILLI_OF_SECOND, 3) .appendOffset("+HHMM", "Z") .toFormatter(Locale.US) }
Example 47
Source File: LocalizedString.scala From wookiee with Apache License 2.0 | 5 votes |
package com.webtrends.harness.utils import java.text.MessageFormat import java.util.{ResourceBundle, Locale} def raw(msg: String)(implicit locale: Locale=Locale.getDefault, context:String="messages"): String = { val bundle = ResourceBundle.getBundle(context, locale, UTF8BundleControl) bundle.getString(msg) } def apply(msg: String, args: Any*)(locale: Locale=Locale.getDefault, context:String="messages"): String = { new MessageFormat(raw(msg)(locale, context), locale).format(args.map(_.asInstanceOf[java.lang.Object]).toArray) } } object LocalizedString extends LocalizedString // @see https://gist.github.com/alaz/1388917 // @see http://stackoverflow.com/questions/4659929/how-to-use-utf-8-in-resource-properties-with-resourcebundle private[utils] object UTF8BundleControl extends ResourceBundle.Control { val Format = "properties.utf8" override def getFormats(baseName: String): java.util.List[String] = { import collection.JavaConverters._ Seq(Format).asJava } override def getFallbackLocale(baseName: String, locale: Locale) = if (locale == Locale.getDefault) null else Locale.getDefault override def newBundle(baseName: String, locale: Locale, fmt: String, loader: ClassLoader, reload: Boolean): ResourceBundle = { import java.util.PropertyResourceBundle import java.io.InputStreamReader // The below is an approximate copy of the default Java implementation def resourceName = toResourceName(toBundleName(baseName, locale), "properties") def stream = if (reload) { for {url <- Option(loader getResource resourceName) connection <- Option(url.openConnection)} yield { connection.setUseCaches(false) connection.getInputStream } } else Option(loader getResourceAsStream resourceName) (for {format <- Option(fmt) if format == Format is <- stream} yield new PropertyResourceBundle(new InputStreamReader(is, "UTF-8"))).orNull } }
Example 48
Source File: LocalizedStringSpec.scala From wookiee with Apache License 2.0 | 5 votes |
package com.webtrends.harness.utils import java.util.Locale import org.specs2.mutable.SpecificationWithJUnit class LocalizedStringSpec extends SpecificationWithJUnit { "localized message" should { LocalizedString("hello")(Locale.ENGLISH) must be equalTo "Hello" LocalizedString("hello")(Locale.forLanguageTag("ru")) must be equalTo "Привет" } "fallback to default" should { LocalizedString("world")(Locale.ENGLISH) must be equalTo "World" LocalizedString("world")(Locale.forLanguageTag("ru")) must be equalTo "World" } "format" should { LocalizedString("greet", "world")(Locale.ENGLISH) must be equalTo "Hello, world" LocalizedString("greet", "world")(Locale.forLanguageTag("ru")) must be equalTo "Привет, world" } "localized message in custom path" should { LocalizedString("custom_path.hello")(Locale.ENGLISH, "com.custom.path.messages") must be equalTo "Hello" LocalizedString("custom_path.hello")(Locale.forLanguageTag("ru"), "com.custom.path.messages") must be equalTo "Привет" } "fallback to default in custom path" should { LocalizedString("custom_path.world")(Locale.ENGLISH, "com.custom.path.messages") must be equalTo "World" LocalizedString("custom_path.world")(Locale.forLanguageTag("ru"), "com.custom.path.messages") must be equalTo "World" } "format in custom path" should { LocalizedString("custom_path.greet", "world")(Locale.ENGLISH, "com.custom.path.messages") must be equalTo "Hello, world" LocalizedString("custom_path.greet", "world")(Locale.forLanguageTag("ru"), "com.custom.path.messages") must be equalTo "Привет, world" } "custom localized message" should { LocalizedString("custom.hello")(Locale.ENGLISH, "custom") must be equalTo "Hello" LocalizedString("custom.hello")(Locale.forLanguageTag("ru"), "custom") must be equalTo "Привет" } "custom fallback to default" should { LocalizedString("custom.world")(Locale.ENGLISH, "custom") must be equalTo "World" LocalizedString("custom.world")(Locale.forLanguageTag("ru"), "custom") must be equalTo "World" } "custom format" should { LocalizedString("custom.greet", "custom world")(Locale.ENGLISH, "custom") must be equalTo "Hello, custom world" LocalizedString("custom.greet", "custom world")(Locale.forLanguageTag("ru"), "custom") must be equalTo "Привет, custom world" } }
Example 49
Source File: CompressionCodecs.scala From spark-xml with Apache License 2.0 | 5 votes |
package com.databricks.spark.xml.util import java.util.Locale import scala.util.control.Exception._ import org.apache.hadoop.io.compress._ private[xml] object CompressionCodecs { private val shortCompressionCodecNames: Map[String, String] = { val codecMap = collection.mutable.Map.empty[String, String] allCatch toTry(codecMap += "bzip2" -> classOf[BZip2Codec].getName) allCatch toTry(codecMap += "gzip" -> classOf[GzipCodec].getName) allCatch toTry(codecMap += "lz4" -> classOf[Lz4Codec].getName) allCatch toTry(codecMap += "snappy" -> classOf[SnappyCodec].getName) codecMap.toMap } def getCodecClass(name: String): Class[_ <: CompressionCodec] = name match { case null => null case codec => val codecName = shortCompressionCodecNames.getOrElse(codec.toLowerCase(Locale.ROOT), codec) try { // scalastyle:off classforname Class.forName(codecName).asInstanceOf[Class[CompressionCodec]] // scalastyle:on classforname } catch { case _: ClassNotFoundException => throw new IllegalArgumentException(s"Codec [$codecName] is not " + s"available. Known codecs are ${shortCompressionCodecNames.keys.mkString(", ")}.") } } }
Example 50
Source File: ParseMode.scala From spark-xml with Apache License 2.0 | 5 votes |
package com.databricks.spark.xml.util import java.util.Locale import org.slf4j.LoggerFactory sealed trait ParseMode { def fromString(mode: String): ParseMode = mode.toUpperCase(Locale.ROOT) match { case PermissiveMode.name => PermissiveMode case DropMalformedMode.name => DropMalformedMode case FailFastMode.name => FailFastMode case _ => logger.warn(s"$mode is not a valid parse mode. Using ${PermissiveMode.name}.") PermissiveMode } }
Example 51
Source File: OSUtil.scala From tsec with MIT License | 5 votes |
package tsec.common import java.security.{AccessController, PrivilegedAction} import java.util.Locale object OSUtil { lazy val isWindows: Boolean = { OSUtil.getSystemProperty("os.name", "").toLowerCase(Locale.US).contains("win") } lazy val isOsx: Boolean = { val osName = OSUtil .getSystemProperty("os.name", "") .toLowerCase(Locale.US) .replaceAll("[^a-z0-9]+", "") osName.startsWith("macosx") || osName.startsWith("osx") } def getSystemProperty(key: String, default: String): String = { if (key == null) throw new NullPointerException("key") if (key.isEmpty) throw new IllegalArgumentException("key must not be empty.") try if (System.getSecurityManager == null) System.getProperty(key) else AccessController.doPrivileged(new PrivilegedAction[String]() { override def run: String = System.getProperty(key) }) catch { case e: SecurityException => default } } }
Example 52
Source File: treeParams.scala From oraf with Apache License 2.0 | 5 votes |
package org.apache.spark.ml.tree import java.util.Locale import org.apache.spark.ml.param._ import org.apache.spark.ml.param.shared.HasWeightCol import org.apache.spark.ml.tree.impl.LocalDecisionTree import org.apache.spark.mllib.tree.configuration.{DefaultTimePredictionStrategy, OptimizedForestStrategy, TimePredictionStrategy, Algo => OldAlgo} import org.apache.spark.mllib.tree.impurity.{Impurity => OldImpurity} private[ml] trait OptimizedDecisionTreeParams extends DecisionTreeParams with HasWeightCol { final val maxMemoryMultiplier: DoubleParam = new DoubleParam(this, "maxMemoryMultiplier", "", ParamValidators.gt(0.0)) var timePredictionStrategy: TimePredictionStrategy = new DefaultTimePredictionStrategy final val maxTasksPerBin: IntParam = new IntParam (this, "maxTasksPerBin", "", ParamValidators.gt(0)) var customSplits: Option[Array[Array[Double]]] = None var localTrainingAlgorithm: LocalTrainingAlgorithm = new LocalDecisionTree setDefault(maxDepth -> 5, maxBins -> 32, minInstancesPerNode -> 1, minInfoGain -> 0.0, maxMemoryInMB -> 256, cacheNodeIds -> true, checkpointInterval -> 10, maxMemoryMultiplier -> 4, maxTasksPerBin -> Int.MaxValue, weightCol -> "weight") @deprecated("This method is deprecated and will be removed in 3.0.0.", "2.1.0") def setMaxMemoryMultiplier(value: Double): this.type = set(maxMemoryMultiplier, value) private[ml] override def getOldStrategy( categoricalFeatures: Map[Int, Int], numClasses: Int, oldAlgo: OldAlgo.Algo, oldImpurity: OldImpurity, subsamplingRate: Double): OptimizedForestStrategy = { val strategy = OptimizedForestStrategy.defaultStrategy(oldAlgo) strategy.impurity = oldImpurity strategy.checkpointInterval = getCheckpointInterval strategy.maxBins = getMaxBins strategy.maxDepth = getMaxDepth strategy.maxMemoryInMB = getMaxMemoryInMB strategy.minInfoGain = getMinInfoGain strategy.minInstancesPerNode = getMinInstancesPerNode strategy.useNodeIdCache = getCacheNodeIds strategy.numClasses = numClasses strategy.categoricalFeaturesInfo = categoricalFeatures strategy.subsamplingRate = subsamplingRate strategy.maxMemoryMultiplier = getMaxMemoryMultiplier strategy.timePredictionStrategy = getTimePredictionStrategy strategy.localTrainingAlgorithm = getLocalTrainingAlgorithm strategy } } private[spark] object OptimizedTreeEnsembleParams { // These options should be lowercase. final val supportedTimePredictionStrategies: Array[String] = Array("size").map(_.toLowerCase(Locale.ROOT)) final val supportedLocalTrainingAlgorithms: Array[String] = Array("yggdrasil").map(_.toLowerCase(Locale.ROOT)) } private[ml] trait OptimizedDecisionTreeClassifierParams extends OptimizedDecisionTreeParams with TreeClassifierParams private[ml] trait OptimizedDecisionTreeRegressorParams extends OptimizedDecisionTreeParams with TreeRegressorParams private[ml] trait OptimizedTreeEnsembleParams extends TreeEnsembleParams with OptimizedDecisionTreeParams { private[ml] override def getOldStrategy( categoricalFeatures: Map[Int, Int], numClasses: Int, oldAlgo: OldAlgo.Algo, oldImpurity: OldImpurity): OptimizedForestStrategy = { super.getOldStrategy(categoricalFeatures, numClasses, oldAlgo, oldImpurity, getSubsamplingRate) } } private[ml] trait OptimizedRandomForestParams extends RandomForestParams with OptimizedTreeEnsembleParams private[ml] trait OptimizedRandomForestClassifierParams extends OptimizedRandomForestParams with TreeClassifierParams private[ml] trait OptimizedRandomForestRegressorParams extends OptimizedRandomForestParams with TreeRegressorParams
Example 53
Source File: StreamingIncrementCommand.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.xsql.execution.command import java.util.Locale import org.apache.spark.SparkException import org.apache.spark.sql.{Dataset, Row, SparkSession} import org.apache.spark.sql.catalyst.encoders.RowEncoder import org.apache.spark.sql.catalyst.expressions.{Attribute, AttributeReference, AttributeSet} import org.apache.spark.sql.catalyst.plans.logical.{LogicalPlan, UnaryNode} import org.apache.spark.sql.catalyst.streaming.InternalOutputModes import org.apache.spark.sql.execution.QueryExecution import org.apache.spark.sql.execution.command.RunnableCommand import org.apache.spark.sql.execution.datasources.DataSource import org.apache.spark.sql.execution.streaming.StreamingRelationV2 import org.apache.spark.sql.sources.v2.StreamWriteSupport import org.apache.spark.sql.streaming.{OutputMode, Trigger} import org.apache.spark.sql.xsql.DataSourceManager._ import org.apache.spark.sql.xsql.StreamingSinkType case class StreamingIncrementCommand(plan: LogicalPlan) extends RunnableCommand { private var outputMode: OutputMode = OutputMode.Append // dummy override def output: Seq[AttributeReference] = Seq.empty // dummy override def producedAttributes: AttributeSet = plan.producedAttributes override def run(sparkSession: SparkSession): Seq[Row] = { import StreamingSinkType._ val qe = new QueryExecution(sparkSession, new ConstructedStreaming(plan)) val df = new Dataset(sparkSession, qe, RowEncoder(qe.analyzed.schema)) plan.collectLeaves.head match { case StreamingRelationV2(_, _, extraOptions, _, _) => val source = extraOptions.getOrElse(STREAMING_SINK_TYPE, DEFAULT_STREAMING_SINK) val sinkOptions = extraOptions.filter(_._1.startsWith(STREAMING_SINK_PREFIX)).map { kv => val key = kv._1.substring(STREAMING_SINK_PREFIX.length) (key, kv._2) } StreamingSinkType.withName(source.toUpperCase(Locale.ROOT)) match { case CONSOLE => case TEXT | PARQUET | ORC | JSON | CSV => if (sinkOptions.get(STREAMING_SINK_PATH) == None) { throw new SparkException("Sink type is file, must config path") } case KAFKA => if (sinkOptions.get(STREAMING_SINK_BOOTSTRAP_SERVERS) == None) { throw new SparkException("Sink type is kafka, must config bootstrap servers") } if (sinkOptions.get(STREAMING_SINK_TOPIC) == None) { throw new SparkException("Sink type is kafka, must config kafka topic") } case _ => throw new SparkException( "Sink type is invalid, " + s"select from ${StreamingSinkType.values}") } val ds = DataSource.lookupDataSource(source, sparkSession.sessionState.conf) val disabledSources = sparkSession.sqlContext.conf.disabledV2StreamingWriters.split(",") val sink = ds.newInstance() match { case w: StreamWriteSupport if !disabledSources.contains(w.getClass.getCanonicalName) => w case _ => val ds = DataSource( sparkSession, className = source, options = sinkOptions.toMap, partitionColumns = Nil) ds.createSink(InternalOutputModes.Append) } val outputMode = InternalOutputModes( extraOptions.getOrElse(STREAMING_OUTPUT_MODE, DEFAULT_STREAMING_OUTPUT_MODE)) val duration = extraOptions.getOrElse(STREAMING_TRIGGER_DURATION, DEFAULT_STREAMING_TRIGGER_DURATION) val trigger = extraOptions.getOrElse(STREAMING_TRIGGER_TYPE, DEFAULT_STREAMING_TRIGGER_TYPE) match { case STREAMING_MICRO_BATCH_TRIGGER => Trigger.ProcessingTime(duration) case STREAMING_ONCE_TRIGGER => Trigger.Once() case STREAMING_CONTINUOUS_TRIGGER => Trigger.Continuous(duration) } val query = sparkSession.sessionState.streamingQueryManager.startQuery( extraOptions.get("queryName"), extraOptions.get(STREAMING_CHECKPOINT_LOCATION), df, sinkOptions.toMap, sink, outputMode, useTempCheckpointLocation = source == DEFAULT_STREAMING_SINK, recoverFromCheckpointLocation = true, trigger = trigger) query.awaitTermination() } // dummy Seq.empty } } case class ConstructedStreaming(child: LogicalPlan) extends UnaryNode { override def output: Seq[Attribute] = child.output }
Example 54
Source File: joinTypes.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.plans import java.util.Locale import org.apache.spark.sql.catalyst.expressions.Attribute object JoinType { def apply(typ: String): JoinType = typ.toLowerCase(Locale.ROOT).replace("_", "") match { case "inner" => Inner case "outer" | "full" | "fullouter" => FullOuter case "leftouter" | "left" => LeftOuter case "rightouter" | "right" => RightOuter case "leftsemi" => LeftSemi case "leftanti" => LeftAnti case "cross" => Cross case _ => val supported = Seq( "inner", "outer", "full", "fullouter", "full_outer", "leftouter", "left", "left_outer", "rightouter", "right", "right_outer", "leftsemi", "left_semi", "leftanti", "left_anti", "cross") throw new IllegalArgumentException(s"Unsupported join type '$typ'. " + "Supported join types include: " + supported.mkString("'", "', '", "'") + ".") } } sealed abstract class JoinType { def sql: String } sealed abstract class InnerLike extends JoinType { def explicitCartesian: Boolean } case object Inner extends InnerLike { override def explicitCartesian: Boolean = false override def sql: String = "INNER" } case object Cross extends InnerLike { override def explicitCartesian: Boolean = true override def sql: String = "CROSS" } case object LeftOuter extends JoinType { override def sql: String = "LEFT OUTER" } case object RightOuter extends JoinType { override def sql: String = "RIGHT OUTER" } case object FullOuter extends JoinType { override def sql: String = "FULL OUTER" } case object LeftSemi extends JoinType { override def sql: String = "LEFT SEMI" } case object LeftAnti extends JoinType { override def sql: String = "LEFT ANTI" } case class ExistenceJoin(exists: Attribute) extends JoinType { override def sql: String = { // This join type is only used in the end of optimizer and physical plans, we will not // generate SQL for this join type throw new UnsupportedOperationException } } case class NaturalJoin(tpe: JoinType) extends JoinType { require(Seq(Inner, LeftOuter, RightOuter, FullOuter).contains(tpe), "Unsupported natural join type " + tpe) override def sql: String = "NATURAL " + tpe.sql } case class UsingJoin(tpe: JoinType, usingColumns: Seq[String]) extends JoinType { require(Seq(Inner, LeftOuter, LeftSemi, RightOuter, FullOuter, LeftAnti).contains(tpe), "Unsupported using join type " + tpe) override def sql: String = "USING " + tpe.sql } object LeftExistence { def unapply(joinType: JoinType): Option[JoinType] = joinType match { case LeftSemi | LeftAnti => Some(joinType) case j: ExistenceJoin => Some(joinType) case _ => None } }
Example 55
Source File: ResolveTableValuedFunctions.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.analysis import java.util.Locale import org.apache.spark.sql.AnalysisException import org.apache.spark.sql.catalyst.expressions.{Alias, Expression} import org.apache.spark.sql.catalyst.plans.logical.{LogicalPlan, Project, Range} import org.apache.spark.sql.catalyst.rules._ import org.apache.spark.sql.types.{DataType, IntegerType, LongType} tvf("start" -> LongType, "end" -> LongType, "step" -> LongType, "numPartitions" -> IntegerType) { case Seq(start: Long, end: Long, step: Long, numPartitions: Int) => Range(start, end, step, Some(numPartitions)) }) ) override def apply(plan: LogicalPlan): LogicalPlan = plan resolveOperators { case u: UnresolvedTableValuedFunction if u.functionArgs.forall(_.resolved) => // The whole resolution is somewhat difficult to understand here due to too much abstractions. // We should probably rewrite the following at some point. Reynold was just here to improve // error messages and didn't have time to do a proper rewrite. val resolvedFunc = builtinFunctions.get(u.functionName.toLowerCase(Locale.ROOT)) match { case Some(tvf) => def failAnalysis(): Nothing = { val argTypes = u.functionArgs.map(_.dataType.typeName).mkString(", ") u.failAnalysis( s"""error: table-valued function ${u.functionName} with alternatives: |${tvf.keys.map(_.toString).toSeq.sorted.map(x => s" ($x)").mkString("\n")} |cannot be applied to: ($argTypes)""".stripMargin) } val resolved = tvf.flatMap { case (argList, resolver) => argList.implicitCast(u.functionArgs) match { case Some(casted) => try { Some(resolver(casted.map(_.eval()))) } catch { case e: AnalysisException => failAnalysis() } case _ => None } } resolved.headOption.getOrElse { failAnalysis() } case _ => u.failAnalysis(s"could not resolve `${u.functionName}` to a table-valued function") } // If alias names assigned, add `Project` with the aliases if (u.outputNames.nonEmpty) { val outputAttrs = resolvedFunc.output // Checks if the number of the aliases is equal to expected one if (u.outputNames.size != outputAttrs.size) { u.failAnalysis(s"Number of given aliases does not match number of output columns. " + s"Function name: ${u.functionName}; number of aliases: " + s"${u.outputNames.size}; number of output columns: ${outputAttrs.size}.") } val aliases = outputAttrs.zip(u.outputNames).map { case (attr, name) => Alias(attr, name)() } Project(aliases, resolvedFunc) } else { resolvedFunc } } }
Example 56
Source File: DateTimeFormatterHelper.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.util import java.time._ import java.time.chrono.IsoChronology import java.time.format.{DateTimeFormatter, DateTimeFormatterBuilder, ResolverStyle} import java.time.temporal.{ChronoField, TemporalAccessor, TemporalQueries} import java.util.Locale import com.google.common.cache.CacheBuilder import org.apache.spark.sql.catalyst.util.DateTimeFormatterHelper._ trait DateTimeFormatterHelper { protected def toInstantWithZoneId(temporalAccessor: TemporalAccessor, zoneId: ZoneId): Instant = { val localTime = if (temporalAccessor.query(TemporalQueries.localTime) == null) { LocalTime.ofNanoOfDay(0) } else { LocalTime.from(temporalAccessor) } val localDate = LocalDate.from(temporalAccessor) val localDateTime = LocalDateTime.of(localDate, localTime) val zonedDateTime = ZonedDateTime.of(localDateTime, zoneId) Instant.from(zonedDateTime) } // Gets a formatter from the cache or creates new one. The buildFormatter method can be called // a few times with the same parameters in parallel if the cache does not contain values // associated to those parameters. Since the formatter is immutable, it does not matter. // In this way, synchronised is intentionally omitted in this method to make parallel calls // less synchronised. // The Cache.get method is not used here to avoid creation of additional instances of Callable. protected def getOrCreateFormatter(pattern: String, locale: Locale): DateTimeFormatter = { val key = (pattern, locale) var formatter = cache.getIfPresent(key) if (formatter == null) { formatter = buildFormatter(pattern, locale) cache.put(key, formatter) } formatter } } private object DateTimeFormatterHelper { val cache = CacheBuilder.newBuilder() .maximumSize(128) .build[(String, Locale), DateTimeFormatter]() def buildFormatter(pattern: String, locale: Locale): DateTimeFormatter = { new DateTimeFormatterBuilder() .parseCaseInsensitive() .appendPattern(pattern) .parseDefaulting(ChronoField.ERA, 1) .parseDefaulting(ChronoField.MONTH_OF_YEAR, 1) .parseDefaulting(ChronoField.DAY_OF_MONTH, 1) .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0) .parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0) .toFormatter(locale) .withChronology(IsoChronology.INSTANCE) .withResolverStyle(ResolverStyle.STRICT) } }
Example 57
Source File: TimestampFormatter.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.util import java.text.ParseException import java.time._ import java.time.format.DateTimeParseException import java.time.temporal.TemporalQueries import java.util.{Locale, TimeZone} import org.apache.spark.sql.catalyst.util.DateTimeUtils.instantToMicros sealed trait TimestampFormatter extends Serializable { @throws(classOf[ParseException]) @throws(classOf[DateTimeParseException]) @throws(classOf[DateTimeException]) def parse(s: String): Long def format(us: Long): String } class Iso8601TimestampFormatter( pattern: String, timeZone: TimeZone, locale: Locale) extends TimestampFormatter with DateTimeFormatterHelper { @transient private lazy val formatter = getOrCreateFormatter(pattern, locale) private def toInstant(s: String): Instant = { val temporalAccessor = formatter.parse(s) if (temporalAccessor.query(TemporalQueries.offset()) == null) { toInstantWithZoneId(temporalAccessor, timeZone.toZoneId) } else { Instant.from(temporalAccessor) } } override def parse(s: String): Long = instantToMicros(toInstant(s)) override def format(us: Long): String = { val secs = Math.floorDiv(us, DateTimeUtils.MICROS_PER_SECOND) val mos = Math.floorMod(us, DateTimeUtils.MICROS_PER_SECOND) val instant = Instant.ofEpochSecond(secs, mos * DateTimeUtils.NANOS_PER_MICROS) formatter.withZone(timeZone.toZoneId).format(instant) } } object TimestampFormatter { val defaultPattern: String = "yyyy-MM-dd HH:mm:ss" val defaultLocale: Locale = Locale.US def apply(format: String, timeZone: TimeZone, locale: Locale): TimestampFormatter = { new Iso8601TimestampFormatter(format, timeZone, locale) } def apply(format: String, timeZone: TimeZone): TimestampFormatter = { apply(format, timeZone, defaultLocale) } def apply(timeZone: TimeZone): TimestampFormatter = { apply(defaultPattern, timeZone, defaultLocale) } }
Example 58
Source File: DateFormatter.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.util import java.time.{Instant, ZoneId} import java.util.Locale import org.apache.spark.sql.catalyst.util.DateTimeUtils.instantToDays sealed trait DateFormatter extends Serializable { def parse(s: String): Int // returns days since epoch def format(days: Int): String } class Iso8601DateFormatter( pattern: String, locale: Locale) extends DateFormatter with DateTimeFormatterHelper { @transient private lazy val formatter = getOrCreateFormatter(pattern, locale) private val UTC = ZoneId.of("UTC") private def toInstant(s: String): Instant = { val temporalAccessor = formatter.parse(s) toInstantWithZoneId(temporalAccessor, UTC) } override def parse(s: String): Int = instantToDays(toInstant(s)) override def format(days: Int): String = { val instant = Instant.ofEpochSecond(days * DateTimeUtils.SECONDS_PER_DAY) formatter.withZone(UTC).format(instant) } } object DateFormatter { val defaultPattern: String = "yyyy-MM-dd" val defaultLocale: Locale = Locale.US def apply(format: String, locale: Locale): DateFormatter = { new Iso8601DateFormatter(format, locale) } def apply(format: String): DateFormatter = apply(format, defaultLocale) def apply(): DateFormatter = apply(defaultPattern) }
Example 59
Source File: CompressionCodecs.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.util import java.util.Locale import org.apache.hadoop.conf.Configuration import org.apache.hadoop.io.SequenceFile.CompressionType import org.apache.hadoop.io.compress._ import org.apache.spark.util.Utils object CompressionCodecs { private val shortCompressionCodecNames = Map( "none" -> null, "uncompressed" -> null, "bzip2" -> classOf[BZip2Codec].getName, "deflate" -> classOf[DeflateCodec].getName, "gzip" -> classOf[GzipCodec].getName, "lz4" -> classOf[Lz4Codec].getName, "snappy" -> classOf[SnappyCodec].getName) def setCodecConfiguration(conf: Configuration, codec: String): Unit = { if (codec != null) { conf.set("mapreduce.output.fileoutputformat.compress", "true") conf.set("mapreduce.output.fileoutputformat.compress.type", CompressionType.BLOCK.toString) conf.set("mapreduce.output.fileoutputformat.compress.codec", codec) conf.set("mapreduce.map.output.compress", "true") conf.set("mapreduce.map.output.compress.codec", codec) } else { // This infers the option `compression` is set to `uncompressed` or `none`. conf.set("mapreduce.output.fileoutputformat.compress", "false") conf.set("mapreduce.map.output.compress", "false") } } }
Example 60
Source File: ParseMode.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.util import java.util.Locale import org.apache.spark.internal.Logging sealed trait ParseMode { def fromString(mode: String): ParseMode = mode.toUpperCase(Locale.ROOT) match { case PermissiveMode.name => PermissiveMode case DropMalformedMode.name => DropMalformedMode case FailFastMode.name => FailFastMode case _ => logWarning(s"$mode is not a valid parse mode. Using ${PermissiveMode.name}.") PermissiveMode } }
Example 61
Source File: InternalOutputModes.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.streaming import java.util.Locale import org.apache.spark.sql.streaming.OutputMode case object Update extends OutputMode def apply(outputMode: String): OutputMode = { outputMode.toLowerCase(Locale.ROOT) match { case "append" => OutputMode.Append case "complete" => OutputMode.Complete case "update" => OutputMode.Update case _ => throw new IllegalArgumentException(s"Unknown output mode $outputMode. " + "Accepted output modes are 'append', 'complete', 'update'") } } }
Example 62
Source File: ScalaUDFSuite.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.expressions import java.util.Locale import org.apache.spark.{SparkException, SparkFunSuite} import org.apache.spark.sql.catalyst.expressions.codegen.CodegenContext import org.apache.spark.sql.types.{IntegerType, StringType} class ScalaUDFSuite extends SparkFunSuite with ExpressionEvalHelper { test("basic") { val intUdf = ScalaUDF((i: Int) => i + 1, IntegerType, Literal(1) :: Nil, true :: Nil) checkEvaluation(intUdf, 2) val stringUdf = ScalaUDF((s: String) => s + "x", StringType, Literal("a") :: Nil, true :: Nil) checkEvaluation(stringUdf, "ax") } test("better error message for NPE") { val udf = ScalaUDF( (s: String) => s.toLowerCase(Locale.ROOT), StringType, Literal.create(null, StringType) :: Nil, true :: Nil) val e1 = intercept[SparkException](udf.eval()) assert(e1.getMessage.contains("Failed to execute user defined function")) val e2 = intercept[SparkException] { checkEvaluationWithUnsafeProjection(udf, null) } assert(e2.getMessage.contains("Failed to execute user defined function")) } test("SPARK-22695: ScalaUDF should not use global variables") { val ctx = new CodegenContext ScalaUDF((s: String) => s + "x", StringType, Literal("a") :: Nil, true :: Nil).genCode(ctx) assert(ctx.inlinedMutableStates.isEmpty) } }
Example 63
Source File: AnalysisTest.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.analysis import java.net.URI import java.util.Locale import org.apache.spark.sql.AnalysisException import org.apache.spark.sql.catalyst.catalog.{CatalogDatabase, InMemoryCatalog, SessionCatalog} import org.apache.spark.sql.catalyst.plans.PlanTest import org.apache.spark.sql.catalyst.plans.logical._ import org.apache.spark.sql.internal.SQLConf trait AnalysisTest extends PlanTest { protected val caseSensitiveAnalyzer = makeAnalyzer(caseSensitive = true) protected val caseInsensitiveAnalyzer = makeAnalyzer(caseSensitive = false) private def makeAnalyzer(caseSensitive: Boolean): Analyzer = { val conf = new SQLConf().copy(SQLConf.CASE_SENSITIVE -> caseSensitive) val catalog = new SessionCatalog(new InMemoryCatalog, FunctionRegistry.builtin, conf) catalog.createDatabase( CatalogDatabase("default", "", new URI("loc"), Map.empty), ignoreIfExists = false) catalog.createTempView("TaBlE", TestRelations.testRelation, overrideIfExists = true) catalog.createTempView("TaBlE2", TestRelations.testRelation2, overrideIfExists = true) catalog.createTempView("TaBlE3", TestRelations.testRelation3, overrideIfExists = true) new Analyzer(catalog, conf) { override val extendedResolutionRules = EliminateSubqueryAliases :: Nil } } protected def getAnalyzer(caseSensitive: Boolean) = { if (caseSensitive) caseSensitiveAnalyzer else caseInsensitiveAnalyzer } protected def checkAnalysis( inputPlan: LogicalPlan, expectedPlan: LogicalPlan, caseSensitive: Boolean = true): Unit = { val analyzer = getAnalyzer(caseSensitive) val actualPlan = analyzer.executeAndCheck(inputPlan) comparePlans(actualPlan, expectedPlan) } protected override def comparePlans( plan1: LogicalPlan, plan2: LogicalPlan, checkAnalysis: Boolean = false): Unit = { // Analysis tests may have not been fully resolved, so skip checkAnalysis. super.comparePlans(plan1, plan2, checkAnalysis) } protected def assertAnalysisSuccess( inputPlan: LogicalPlan, caseSensitive: Boolean = true): Unit = { val analyzer = getAnalyzer(caseSensitive) val analysisAttempt = analyzer.execute(inputPlan) try analyzer.checkAnalysis(analysisAttempt) catch { case a: AnalysisException => fail( s""" |Failed to Analyze Plan |$inputPlan | |Partial Analysis |$analysisAttempt """.stripMargin, a) } } protected def assertAnalysisError( inputPlan: LogicalPlan, expectedErrors: Seq[String], caseSensitive: Boolean = true): Unit = { val analyzer = getAnalyzer(caseSensitive) val e = intercept[AnalysisException] { analyzer.checkAnalysis(analyzer.execute(inputPlan)) } if (!expectedErrors.map(_.toLowerCase(Locale.ROOT)).forall( e.getMessage.toLowerCase(Locale.ROOT).contains)) { fail( s"""Exception message should contain the following substrings: | | ${expectedErrors.mkString("\n ")} | |Actual exception message: | | ${e.getMessage} """.stripMargin) } } }
Example 64
Source File: InternalOutputModesSuite.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.streaming import java.util.Locale import org.apache.spark.SparkFunSuite import org.apache.spark.sql.streaming.OutputMode class InternalOutputModesSuite extends SparkFunSuite { test("supported strings") { def testMode(outputMode: String, expected: OutputMode): Unit = { assert(InternalOutputModes(outputMode) === expected) } testMode("append", OutputMode.Append) testMode("Append", OutputMode.Append) testMode("complete", OutputMode.Complete) testMode("Complete", OutputMode.Complete) testMode("update", OutputMode.Update) testMode("Update", OutputMode.Update) } test("unsupported strings") { def testMode(outputMode: String): Unit = { val acceptedModes = Seq("append", "update", "complete") val e = intercept[IllegalArgumentException](InternalOutputModes(outputMode)) (Seq("output mode", "unknown", outputMode) ++ acceptedModes).foreach { s => assert(e.getMessage.toLowerCase(Locale.ROOT).contains(s.toLowerCase(Locale.ROOT))) } } testMode("Xyz") } }
Example 65
Source File: OrcOptions.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution.datasources.orc import java.util.Locale import org.apache.orc.OrcConf.COMPRESS import org.apache.spark.sql.catalyst.util.CaseInsensitiveMap import org.apache.spark.sql.internal.SQLConf val compressionCodec: String = { // `compression`, `orc.compress`(i.e., OrcConf.COMPRESS), and `spark.sql.orc.compression.codec` // are in order of precedence from highest to lowest. val orcCompressionConf = parameters.get(COMPRESS.getAttribute) val codecName = parameters .get("compression") .orElse(orcCompressionConf) .getOrElse(sqlConf.orcCompressionCodec) .toLowerCase(Locale.ROOT) if (!shortOrcCompressionCodecNames.contains(codecName)) { val availableCodecs = shortOrcCompressionCodecNames.keys.map(_.toLowerCase(Locale.ROOT)) throw new IllegalArgumentException(s"Codec [$codecName] " + s"is not available. Available codecs are ${availableCodecs.mkString(", ")}.") } shortOrcCompressionCodecNames(codecName) } } object OrcOptions { // The ORC compression short names private val shortOrcCompressionCodecNames = Map( "none" -> "NONE", "uncompressed" -> "NONE", "snappy" -> "SNAPPY", "zlib" -> "ZLIB", "lzo" -> "LZO") def getORCCompressionCodecName(name: String): String = shortOrcCompressionCodecNames(name) }
Example 66
package org.apache.spark.sql.execution.datasources import java.util.Locale import org.apache.spark.sql._ import org.apache.spark.sql.catalyst.TableIdentifier import org.apache.spark.sql.catalyst.catalog.{CatalogTable, CatalogUtils} import org.apache.spark.sql.catalyst.expressions.Attribute import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan import org.apache.spark.sql.execution.command.{DDLUtils, RunnableCommand} import org.apache.spark.sql.types._ case class CreateTempViewUsing( tableIdent: TableIdentifier, userSpecifiedSchema: Option[StructType], replace: Boolean, global: Boolean, provider: String, options: Map[String, String]) extends RunnableCommand { if (tableIdent.database.isDefined) { throw new AnalysisException( s"Temporary view '$tableIdent' should not have specified a database") } override def argString: String = { s"[tableIdent:$tableIdent " + userSpecifiedSchema.map(_ + " ").getOrElse("") + s"replace:$replace " + s"provider:$provider " + CatalogUtils.maskCredentials(options) } override def run(sparkSession: SparkSession): Seq[Row] = { if (provider.toLowerCase(Locale.ROOT) == DDLUtils.HIVE_PROVIDER) { throw new AnalysisException("Hive data source can only be used with tables, " + "you can't use it with CREATE TEMP VIEW USING") } val dataSource = DataSource( sparkSession, userSpecifiedSchema = userSpecifiedSchema, className = provider, options = options) val catalog = sparkSession.sessionState.catalog val viewDefinition = Dataset.ofRows( sparkSession, LogicalRelation(dataSource.resolveRelation())).logicalPlan if (global) { catalog.createGlobalTempView(tableIdent.table, viewDefinition, replace) } else { catalog.createTempView(tableIdent.table, viewDefinition, replace) } Seq.empty[Row] } } case class RefreshTable(tableIdent: TableIdentifier) extends RunnableCommand { override def run(sparkSession: SparkSession): Seq[Row] = { // Refresh the given table's metadata. If this table is cached as an InMemoryRelation, // drop the original cached version and make the new version cached lazily. sparkSession.catalog.refreshTable(tableIdent.quotedString) Seq.empty[Row] } } case class RefreshResource(path: String) extends RunnableCommand { override def run(sparkSession: SparkSession): Seq[Row] = { sparkSession.catalog.refreshByPath(path) Seq.empty[Row] } }
Example 67
Source File: ParquetOptions.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution.datasources.parquet import java.util.Locale import org.apache.parquet.hadoop.ParquetOutputFormat import org.apache.parquet.hadoop.metadata.CompressionCodecName import org.apache.spark.sql.catalyst.util.CaseInsensitiveMap import org.apache.spark.sql.internal.SQLConf val mergeSchema: Boolean = parameters .get(MERGE_SCHEMA) .map(_.toBoolean) .getOrElse(sqlConf.isParquetSchemaMergingEnabled) } object ParquetOptions { val MERGE_SCHEMA = "mergeSchema" // The parquet compression short names private val shortParquetCompressionCodecNames = Map( "none" -> CompressionCodecName.UNCOMPRESSED, "uncompressed" -> CompressionCodecName.UNCOMPRESSED, "snappy" -> CompressionCodecName.SNAPPY, "gzip" -> CompressionCodecName.GZIP, "lzo" -> CompressionCodecName.LZO, "lz4" -> CompressionCodecName.LZ4, "brotli" -> CompressionCodecName.BROTLI, "zstd" -> CompressionCodecName.ZSTD) def getParquetCompressionCodecName(name: String): String = { shortParquetCompressionCodecNames(name).name() } }
Example 68
Source File: HadoopFsRelation.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution.datasources import java.util.Locale import scala.collection.mutable import org.apache.spark.sql.{SparkSession, SQLContext} import org.apache.spark.sql.catalyst.catalog.BucketSpec import org.apache.spark.sql.execution.FileRelation import org.apache.spark.sql.sources.{BaseRelation, DataSourceRegister} import org.apache.spark.sql.types.{StructField, StructType} case class HadoopFsRelation( location: FileIndex, partitionSchema: StructType, dataSchema: StructType, bucketSpec: Option[BucketSpec], fileFormat: FileFormat, options: Map[String, String])(val sparkSession: SparkSession) extends BaseRelation with FileRelation { override def sqlContext: SQLContext = sparkSession.sqlContext private def getColName(f: StructField): String = { if (sparkSession.sessionState.conf.caseSensitiveAnalysis) { f.name } else { f.name.toLowerCase(Locale.ROOT) } } val overlappedPartCols = mutable.Map.empty[String, StructField] partitionSchema.foreach { partitionField => if (dataSchema.exists(getColName(_) == getColName(partitionField))) { overlappedPartCols += getColName(partitionField) -> partitionField } } // When data and partition schemas have overlapping columns, the output // schema respects the order of the data schema for the overlapping columns, and it // respects the data types of the partition schema. val schema: StructType = { StructType(dataSchema.map(f => overlappedPartCols.getOrElse(getColName(f), f)) ++ partitionSchema.filterNot(f => overlappedPartCols.contains(getColName(f)))) } def partitionSchemaOption: Option[StructType] = if (partitionSchema.isEmpty) None else Some(partitionSchema) override def toString: String = { fileFormat match { case source: DataSourceRegister => source.shortName() case _ => "HadoopFiles" } } override def sizeInBytes: Long = { val compressionFactor = sqlContext.conf.fileCompressionFactor (location.sizeInBytes * compressionFactor).toLong } override def inputFiles: Array[String] = location.inputFiles }
Example 69
Source File: HiveSerDe.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.internal import java.util.Locale import org.apache.spark.sql.catalyst.catalog.CatalogStorageFormat case class HiveSerDe( inputFormat: Option[String] = None, outputFormat: Option[String] = None, serde: Option[String] = None) object HiveSerDe { val serdeMap = Map( "sequencefile" -> HiveSerDe( inputFormat = Option("org.apache.hadoop.mapred.SequenceFileInputFormat"), outputFormat = Option("org.apache.hadoop.mapred.SequenceFileOutputFormat"), serde = Option("org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe")), "rcfile" -> HiveSerDe( inputFormat = Option("org.apache.hadoop.hive.ql.io.RCFileInputFormat"), outputFormat = Option("org.apache.hadoop.hive.ql.io.RCFileOutputFormat"), serde = Option("org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe")), "orc" -> HiveSerDe( inputFormat = Option("org.apache.hadoop.hive.ql.io.orc.OrcInputFormat"), outputFormat = Option("org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat"), serde = Option("org.apache.hadoop.hive.ql.io.orc.OrcSerde")), "parquet" -> HiveSerDe( inputFormat = Option("org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat"), outputFormat = Option("org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat"), serde = Option("org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe")), "textfile" -> HiveSerDe( inputFormat = Option("org.apache.hadoop.mapred.TextInputFormat"), outputFormat = Option("org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"), serde = Option("org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe")), "avro" -> HiveSerDe( inputFormat = Option("org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat"), outputFormat = Option("org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat"), serde = Option("org.apache.hadoop.hive.serde2.avro.AvroSerDe"))) def sourceToSerDe(source: String): Option[HiveSerDe] = { val key = source.toLowerCase(Locale.ROOT) match { case s if s.startsWith("org.apache.spark.sql.parquet") => "parquet" case s if s.startsWith("org.apache.spark.sql.execution.datasources.parquet") => "parquet" case s if s.startsWith("org.apache.spark.sql.orc") => "orc" case s if s.startsWith("org.apache.spark.sql.hive.orc") => "orc" case s if s.startsWith("org.apache.spark.sql.execution.datasources.orc") => "orc" case s if s.equals("orcfile") => "orc" case s if s.equals("parquetfile") => "parquet" case s if s.equals("avrofile") => "avro" case s => s } serdeMap.get(key) } def getDefaultStorage(conf: SQLConf): CatalogStorageFormat = { val defaultStorageType = conf.getConfString("hive.default.fileformat", "textfile") val defaultHiveSerde = sourceToSerDe(defaultStorageType) CatalogStorageFormat.empty.copy( inputFormat = defaultHiveSerde.flatMap(_.inputFormat) .orElse(Some("org.apache.hadoop.mapred.TextInputFormat")), outputFormat = defaultHiveSerde.flatMap(_.outputFormat) .orElse(Some("org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat")), serde = defaultHiveSerde.flatMap(_.serde) .orElse(Some("org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe"))) } }
Example 70
Source File: TPCDSQueryBenchmarkArguments.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution.benchmark import java.util.Locale class TPCDSQueryBenchmarkArguments(val args: Array[String]) { var dataLocation: String = null var queryFilter: Set[String] = Set.empty parseArgs(args.toList) validateArguments() private def optionMatch(optionName: String, s: String): Boolean = { optionName == s.toLowerCase(Locale.ROOT) } private def parseArgs(inputArgs: List[String]): Unit = { var args = inputArgs while (args.nonEmpty) { args match { case optName :: value :: tail if optionMatch("--data-location", optName) => dataLocation = value args = tail case optName :: value :: tail if optionMatch("--query-filter", optName) => queryFilter = value.toLowerCase(Locale.ROOT).split(",").map(_.trim).toSet args = tail case _ => // scalastyle:off println System.err.println("Unknown/unsupported param " + args) // scalastyle:on println printUsageAndExit(1) } } } private def printUsageAndExit(exitCode: Int): Unit = { // scalastyle:off System.err.println(""" |Usage: spark-submit --class <this class> <spark sql test jar> [Options] |Options: | --data-location Path to TPCDS data | --query-filter Queries to filter, e.g., q3,q5,q13 | |------------------------------------------------------------------------------------------------------------------ |In order to run this benchmark, please follow the instructions at |https://github.com/databricks/spark-sql-perf/blob/master/README.md |to generate the TPCDS data locally (preferably with a scale factor of 5 for benchmarking). |Thereafter, the value of <TPCDS data location> needs to be set to the location where the generated data is stored. """.stripMargin) // scalastyle:on System.exit(exitCode) } private def validateArguments(): Unit = { if (dataLocation == null) { // scalastyle:off println System.err.println("Must specify a data location") // scalastyle:on println printUsageAndExit(-1) } } }
Example 71
Source File: LocaleFixtures.scala From play-json with Apache License 2.0 | 5 votes |
package play.api.libs.json import java.util.Locale object LocaleFixtures { def fullLocale = new Locale.Builder() .setLocale(Locale.FRANCE) .addUnicodeLocaleAttribute("foo") .addUnicodeLocaleAttribute("bar") .setExtension('a', "foo") .setExtension('b', "bar") .setRegion("FR") .setScript("Latn") .setVariant("polyton") .setUnicodeLocaleKeyword("ka", "ipsum") .setUnicodeLocaleKeyword("kb", "value") .build() val locales = Seq(Locale.FRANCE, Locale.CANADA_FRENCH, new Locale("fr"), fullLocale) val tags = Seq("fr-FR", "fr-CA", "fr", "fr-Latn-FR-polyton-a-foo-b-bar-u-bar-foo-ka-ipsum-kb-value") val objs = Seq( Json.obj("language" -> "fr", "country" -> "FR"), Json.obj("language" -> "fr", "country" -> "CA"), Json.obj("language" -> "fr"), Json.obj( "variant" -> "polyton", "country" -> "FR", "attributes" -> Json.arr("bar", "foo"), "language" -> "fr", "keywords" -> Json.obj("ka" -> "ipsum", "kb" -> "value"), "script" -> "Latn", "extension" -> Json.obj( "a" -> "foo", "b" -> "bar", "u" -> "bar-foo-ka-ipsum-kb-value" ) ) ) }
Example 72
Source File: WithSQLContext.scala From HANAVora-Extensions with Apache License 2.0 | 5 votes |
package com.sap.spark import java.util.Locale import org.apache.spark.sql.SQLContext import org.apache.spark.sql.hive.HiveContext import org.scalatest.{BeforeAndAfterEach, Suite} trait WithSQLContext extends BeforeAndAfterEach { self: Suite with WithSparkContext => override def beforeEach(): Unit = { try { super.beforeEach() setUpSQLContext() } catch { case ex: Throwable => tearDownSQLContext() throw ex } } override def afterEach(): Unit = { try { super.afterEach() } finally { tearDownSQLContext() } } implicit def sqlContext: SQLContext = _sqlContext def sqlc: SQLContext = sqlContext var _sqlContext: SQLContext = _ protected def setUpSQLContext(): Unit = _sqlContext = SQLContext.getOrCreate(sc).newSession() protected def tearDownSQLContext(): Unit = _sqlContext = null protected def tableName(name: String): String = sqlc match { case _: HiveContext => name.toLowerCase(Locale.ENGLISH) case _ => name } }
Example 73
Source File: TestUtils.scala From HANAVora-Extensions with Apache License 2.0 | 5 votes |
package com.sap.spark.util import java.util.Locale import scala.io.Source import org.apache.spark.SparkContext import org.apache.spark.rdd.RDD import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan import org.apache.spark.sql.{Row, SQLContext, SapSQLContext} import org.apache.spark.sql.hive.SapHiveContext import org.apache.spark.sql.sources.sql.SqlLikeRelation import org.apache.spark.sql.sources.{BaseRelation, CatalystSource, Table} import org.apache.spark.sql.types.StructType import org.mockito.Matchers._ import org.mockito.Mockito._ import scala.tools.nsc.io.Directory import scala.util.{Failure, Success} def parsePTestFile(fileName: String): List[(String, String, String)] = { val filePath = getFileFromClassPath(fileName) val fileContents = Source.fromFile(filePath).getLines .map(p => p.stripMargin.trim) .filter(p => !p.isEmpty && !p.startsWith("//")) // filter empty rows and comments .mkString("\n") val p = new PTestFileParser // strip semicolons from query and parsed p(fileContents) match { case Success(lines) => lines.map { case (query, parsed, expect) => (stripSemicolon(query).trim, stripSemicolon(parsed).trim, expect.trim) } case Failure(ex) => throw ex } } private def stripSemicolon(sql: String): String = if (sql.endsWith(";")) { sql.substring(0, sql.length-1) } else { sql } def withTempDirectory[A](f: Directory => A): A = { val dir = Directory.makeTemp() try { f(dir) } finally { dir.deleteIfExists() } } }
Example 74
Source File: ExcelOutputWriter.scala From spark-hadoopoffice-ds with Apache License 2.0 | 5 votes |
package org.zuinnote.spark.office.excel import java.math.BigDecimal import java.sql.Date import java.sql.Timestamp import java.text.DateFormat import java.text.SimpleDateFormat import java.util.Calendar import org.apache.hadoop.conf.Configuration import org.apache.hadoop.io.NullWritable import org.apache.hadoop.io.ArrayWritable import org.apache.hadoop.mapreduce.RecordWriter import org.apache.hadoop.mapreduce.TaskAttemptContext import org.apache.hadoop.fs.Path import org.apache.spark.sql.catalyst.{ CatalystTypeConverters, InternalRow } import org.apache.spark.sql.Row import org.apache.spark.sql.execution.datasources.OutputWriter import org.apache.spark.sql.types._ import org.zuinnote.hadoop.office.format.common.dao.SpreadSheetCellDAO import org.zuinnote.hadoop.office.format.common.HadoopOfficeWriteConfiguration import org.zuinnote.hadoop.office.format.common.util.msexcel.MSExcelUtil import org.zuinnote.hadoop.office.format.mapreduce._ import org.apache.commons.logging.LogFactory import org.apache.commons.logging.Log import org.zuinnote.hadoop.office.format.common.HadoopOfficeWriteConfiguration import java.util.Locale import java.text.DecimalFormat import org.zuinnote.hadoop.office.format.common.converter.ExcelConverterSimpleSpreadSheetCellDAO import java.text.NumberFormat // NOTE: This class is instantiated and used on executor side only, no need to be serializable. private[excel] class ExcelOutputWriter( path: String, dataSchema: StructType, context: TaskAttemptContext, options: Map[String, String]) extends OutputWriter { def write(row: Row): Unit = { // check useHeader if (useHeader) { val headers = row.schema.fieldNames var i = 0 for (x <- headers) { val headerColumnSCD = new SpreadSheetCellDAO(x, "", "", MSExcelUtil.getCellAddressA1Format(currentRowNum, i), defaultSheetName) recordWriter.write(NullWritable.get(), headerColumnSCD) i += 1 } currentRowNum += 1 useHeader = false } // for each value in the row if (row.size>0) { var currentColumnNum = 0; val simpleObject = new Array[AnyRef](row.size) for (i <- 0 to row.size - 1) { // for each element of the row val obj = row.get(i) if ((obj.isInstanceOf[Seq[String]]) && (obj.asInstanceOf[Seq[String]].length==5)) { val formattedValue = obj.asInstanceOf[Seq[String]](0) val comment = obj.asInstanceOf[Seq[String]](1) val formula = obj.asInstanceOf[Seq[String]](2) val address = obj.asInstanceOf[Seq[String]](3) val sheetName = obj.asInstanceOf[Seq[String]](4) simpleObject(i) = new SpreadSheetCellDAO(formattedValue,comment,formula,address,sheetName) } else { simpleObject(i)=obj.asInstanceOf[AnyRef] } } // convert row to spreadsheetcellDAO val spreadSheetCellDAORow = simpleConverter.getSpreadSheetCellDAOfromSimpleDataType(simpleObject, defaultSheetName, currentRowNum) // write it for (x<- spreadSheetCellDAORow) { recordWriter.write(NullWritable.get(), x) } } currentRowNum += 1 } override def close(): Unit = { recordWriter.close(context) currentRowNum = 0; } }
Example 75
Source File: Http4s.scala From kamon-http4s with Apache License 2.0 | 5 votes |
package kamon.http4s import com.typesafe.config.Config import kamon.util.DynamicAccess import kamon.Kamon import kamon.instrumentation.http.{HttpMessage, HttpOperationNameGenerator} object Http4s { @volatile var nameGenerator: HttpOperationNameGenerator = nameGeneratorFromConfig(Kamon.config()) private def nameGeneratorFromConfig(config: Config): HttpOperationNameGenerator = { val dynamic = new DynamicAccess(getClass.getClassLoader) val nameGeneratorFQCN = config.getString("kamon.instrumentation.http4s.client.tracing.operations.name-generator") dynamic.createInstanceFor[HttpOperationNameGenerator](nameGeneratorFQCN, Nil) } Kamon.onReconfigure { newConfig => nameGenerator = nameGeneratorFromConfig(newConfig) } } class DefaultNameGenerator extends HttpOperationNameGenerator { import java.util.Locale import scala.collection.concurrent.TrieMap private val localCache = TrieMap.empty[String, String] private val normalizePattern = """\$([^<]+)<[^>]+>""".r override def name(request: HttpMessage.Request): Option[String] = { Some( localCache.getOrElseUpdate(s"${request.method}${request.path}", { // Convert paths of form GET /foo/bar/$paramname<regexp>/blah to foo.bar.paramname.blah.get val p = normalizePattern.replaceAllIn(request.path, "$1").replace('/', '.').dropWhile(_ == '.') val normalisedPath = { if (p.lastOption.exists(_ != '.')) s"$p." else p } s"$normalisedPath${request.method.toLowerCase(Locale.ENGLISH)}" }) ) } }
Example 76
Source File: UtilsSpec.scala From kaitai_struct_compiler with GNU General Public License v3.0 | 5 votes |
package io.kaitai.struct import java.util.Locale import org.scalatest.{FunSpec, Matchers} class UtilsSpec extends FunSpec with Matchers { val simpleStr = "foo_bar" val internalId = "_foo_bar" val allLetters = "a_b_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z" describe("UtilsSpec") { it("checks default locale") { val l = Locale.getDefault Console.println(s"country: ${l.getCountry}") Console.println(s"language: ${l.getLanguage}") Console.println(s"displayScript: ${l.getDisplayScript}") Console.println(s"displayVariant: ${l.getDisplayVariant}") } describe("lowerUnderscoreCase") { it("has Turkish locale") { Console.println(Locale.getDefault) Console.println(Locale.forLanguageTag("tr")) } it("works with simple string") { Utils.lowerUnderscoreCase(simpleStr) shouldEqual "foo_bar" } it("is locale-independent") { Utils.lowerUnderscoreCase(allLetters) shouldEqual "a_b_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z" } } describe("upperUnderscoreCase") { it("works with simple string") { Utils.upperUnderscoreCase(simpleStr) shouldEqual "FOO_BAR" } it("is locale-independent") { Utils.upperUnderscoreCase(allLetters) shouldEqual "A_B_C_D_E_F_G_H_I_J_K_L_M_N_O_P_Q_R_S_T_U_V_W_X_Y_Z" } } describe("upperCamelCase") { it("works") { Utils.upperCamelCase(simpleStr) shouldEqual "FooBar" } it("preserves initial underscore") { Utils.upperCamelCase(internalId) shouldEqual "_FooBar" } it("is locale-independent") { Utils.upperCamelCase(allLetters) shouldEqual "ABCDEFGHIJKLMNOPQRSTUVWXYZ" } } describe("lowerCamelCase") { it("works") { Utils.lowerCamelCase(simpleStr) shouldEqual "fooBar" } it("preserves initial underscore") { Utils.lowerCamelCase(internalId) shouldEqual "_fooBar" } it("is locale-independent") { Utils.lowerCamelCase(allLetters) shouldEqual "aBCDEFGHIJKLMNOPQRSTUVWXYZ" } } } }
Example 77
Source File: CanonicalNameFormatter.scala From airframe with Apache License 2.0 | 5 votes |
package wvlet.airframe.surface import java.util.Locale object CanonicalNameFormatter { def format(name: String): String = { name.toLowerCase(Locale.US).replaceAll("[ _\\.-]", "") } implicit class ToCanonicalNameFormatter(name: String) { def canonicalName: String = { CanonicalNameFormatter.format(name) } } }
Example 78
Source File: HttpRequestMatcher.scala From airframe with Apache License 2.0 | 5 votes |
package wvlet.airframe.http.recorder import java.util.Locale import com.twitter.finagle.http.{MediaType, Request} import wvlet.log.LogSupport trait HttpRequestMatcher { def computeHash(request: Request): Int } object HttpRequestMatcher { // Http headers to ignore for request hashing purposes def defaultExcludeHeaderPrefixes: Seq[String] = Seq( "date", // unstable header "x-b3-", // Finagle's tracing IDs "finagle-", // Finagle specific headers "host", // The host value can be changed "content-length", // this can be 0 (or missing) "connection", // Client might set this header "user-agent" // User-agent can be arbitrary ) def newRequestMatcher(extraHeadersToExclude: Seq[String]): HttpRequestMatcher = { new DefaultHttpRequestMatcher(defaultExcludeHeaderPrefixes ++ extraHeadersToExclude) } class DefaultHttpRequestMatcher(excludeHeaderPrefixes: Seq[String] = defaultExcludeHeaderPrefixes) extends HttpRequestMatcher with LogSupport { private val excludeHeaderPrefixesLowerCase: Seq[String] = excludeHeaderPrefixes.map(_.toLowerCase(Locale.ENGLISH)) def computeHash(request: Request): Int = { val prefix = computeRequestPathHash(request) val httpHeadersForHash = filterHeaders(request, excludeHeaderPrefixesLowerCase) trace(s"http headers for request ${request}: ${httpHeadersForHash.mkString(",")}") httpHeadersForHash match { case headers if headers.isEmpty => prefix.hashCode * 13 case headers => val headerHash = headers .map { x => s"${x._1.toLowerCase(Locale.ENGLISH)}:${x._2}".hashCode }.reduce { (xor, next) => xor ^ next // Take XOR to compute order-insensitive hash values. } prefix.hashCode * 13 + headerHash } } } private def computeRequestPathHash(request: Request): Int = { val contentHash = request.content.hashCode() s"${request.method.toString()}:${request.uri}:${contentHash}".hashCode } def filterHeaders(request: Request, excludePrefixes: Seq[String]): Map[String, String] = { request.headerMap.toSeq.filterNot { x => val key = x._1.toLowerCase(Locale.ENGLISH) excludePrefixes.exists(ex => key.startsWith(ex)) }.toMap } object PathOnlyMatcher extends HttpRequestMatcher { override def computeHash(request: Request): Int = { computeRequestPathHash(request) } } }
Example 79
Source File: TimeStampFormatter.scala From airframe with Apache License 2.0 | 5 votes |
package wvlet.airframe.metrics import java.time.format.{DateTimeFormatterBuilder, SignStyle} import java.time.{Instant, ZoneOffset, ZonedDateTime} import java.util.Locale object TimeStampFormatter { import java.time.temporal.ChronoField._ val noSpaceTimestampFormat = new DateTimeFormatterBuilder() .parseCaseInsensitive() .appendValue(YEAR, 4, 10, SignStyle.EXCEEDS_PAD) .appendLiteral('-') .appendValue(MONTH_OF_YEAR, 2) .appendLiteral('-') .appendValue(DAY_OF_MONTH, 2) .appendLiteral('T') .appendValue(HOUR_OF_DAY, 2) .appendLiteral(':') .appendValue(MINUTE_OF_HOUR, 2) .appendLiteral(':') .appendValue(SECOND_OF_MINUTE, 2) .appendLiteral('.') .appendValue(MILLI_OF_SECOND, 3) .appendOffset("+HHMM", "Z") .toFormatter(Locale.US) val humanReadableTimestampFormatter = new DateTimeFormatterBuilder() .parseCaseInsensitive() .appendValue(YEAR, 4, 10, SignStyle.EXCEEDS_PAD) .appendLiteral('-') .appendValue(MONTH_OF_YEAR, 2) .appendLiteral('-') .appendValue(DAY_OF_MONTH, 2) .appendLiteral(' ') .appendValue(HOUR_OF_DAY, 2) .appendLiteral(':') .appendValue(MINUTE_OF_HOUR, 2) .appendLiteral(':') .appendValue(SECOND_OF_MINUTE, 2) .appendOffset("+HHMM", "Z") .toFormatter(Locale.US) def formatTimestamp(time: ZonedDateTime): String = { humanReadableTimestampFormatter.format(time) } def formatTimestamp(timeMillis: Long, zone: ZoneOffset = systemTimeZone): String = { val timestamp = ZonedDateTime.ofInstant(Instant.ofEpochMilli(timeMillis), zone) humanReadableTimestampFormatter.format(timestamp) } def formatTimestampWithNoSpace(timeMillis: Long): String = { val timestamp = ZonedDateTime.ofInstant(Instant.ofEpochMilli(timeMillis), systemTimeZone) noSpaceTimestampFormat.format(timestamp) } }
Example 80
Source File: LogTimestampFormatter.scala From airframe with Apache License 2.0 | 5 votes |
package wvlet.log import java.time.format.{DateTimeFormatterBuilder, SignStyle} import java.time.{Instant, ZoneId, ZonedDateTime} import java.util.Locale object LogTimestampFormatter { import java.time.temporal.ChronoField._ val systemZone = ZoneId.systemDefault().normalized() val noSpaceTimestampFormat = new DateTimeFormatterBuilder() .parseCaseInsensitive() .appendValue(YEAR, 4, 10, SignStyle.EXCEEDS_PAD) .appendLiteral('-') .appendValue(MONTH_OF_YEAR, 2) .appendLiteral('-') .appendValue(DAY_OF_MONTH, 2) .appendLiteral('T') .appendValue(HOUR_OF_DAY, 2) .appendLiteral(':') .appendValue(MINUTE_OF_HOUR, 2) .appendLiteral(':') .appendValue(SECOND_OF_MINUTE, 2) .appendLiteral('.') .appendValue(MILLI_OF_SECOND, 3) .appendOffset("+HHMM", "Z") .toFormatter(Locale.US) val humanReadableTimestampFormatter = new DateTimeFormatterBuilder() .parseCaseInsensitive() .appendValue(YEAR, 4, 10, SignStyle.EXCEEDS_PAD) .appendLiteral('-') .appendValue(MONTH_OF_YEAR, 2) .appendLiteral('-') .appendValue(DAY_OF_MONTH, 2) .appendLiteral(' ') .appendValue(HOUR_OF_DAY, 2) .appendLiteral(':') .appendValue(MINUTE_OF_HOUR, 2) .appendLiteral(':') .appendValue(SECOND_OF_MINUTE, 2) .appendLiteral('.') .appendValue(MILLI_OF_SECOND, 3) .appendOffset("+HHMM", "Z") .toFormatter(Locale.US) def formatTimestamp(timeMillis: Long): String = { val timestamp = ZonedDateTime.ofInstant(Instant.ofEpochMilli(timeMillis), systemZone) humanReadableTimestampFormatter.format(timestamp) } def formatTimestampWithNoSpaace(timeMillis: Long): String = { val timestamp = ZonedDateTime.ofInstant(Instant.ofEpochMilli(timeMillis), systemZone) noSpaceTimestampFormat.format(timestamp) } }
Example 81
Source File: JsonToCsv.scala From temperature-machine with Apache License 2.0 | 5 votes |
package bad.robot.temperature import java.lang.Math.abs import java.time.Instant import java.time.ZoneId._ import java.time.format.DateTimeFormatter import java.time.format.FormatStyle._ import java.util.Locale import io.circe.Decoder import scalaz.\/ object JsonToCsv { type Row = (String, Instant, Double) val DefaultTimeFormatter = DateTimeFormatter.ofLocalizedDateTime(SHORT).withLocale(Locale.getDefault).withZone(systemDefault()) def convert(json: => Error \/ String, formatter: DateTimeFormatter): Error \/ String = { for { string <- json series <- decodeAsDisjunction[List[Series]](string) } yield { toCsv(series, formatter) } } private def toCsv(series: List[Series], formatter: DateTimeFormatter) = { val quote = "\"" def toRows: List[Row] = for { reading <- series measurement <- reading.data } yield { (reading.label, measurement.time, measurement.temperature.celsius) } def toCsv(rows: List[Row]): List[String] = { val enquote: String => String = value => s"$quote$value$quote" val heading = List( enquote("Sensor"), enquote("Time"), enquote("Temperature"), enquote("Difference") ).mkString(",") if (rows.isEmpty) return Nil val tuples = rows.map(x => (x._1, x._2, x._3, "0")) val rowsWithPercentageDifference = tuples.drop(1).scan(tuples.head) { case (previous, current) => (current._1, current._2, current._3, f"${abs(current._3 - previous._3)}%.2f") } heading :: rowsWithPercentageDifference.map(row => List( enquote(row._1), enquote(formatter.format(row._2)), enquote(row._3.toString), enquote(row._4.toString) ).mkString(",")) } toCsv(toRows).mkString(sys.props("line.separator")) } } object Series { import io.circe.generic.semiauto._ implicit val dataCodec: Decoder[Series] = deriveDecoder[Series] } case class Series(label: String, data: List[Data]) object Data { import io.circe.generic.semiauto._ implicit val seriesCodec: Decoder[Data] = deriveDecoder[Data] } case class Data(x: Long, y: String) { def time: Instant = Instant.ofEpochMilli(x) def temperature: Temperature = Temperature(y.toDouble) }
Example 82
Source File: PrettyDuration.scala From perf_tester with Apache License 2.0 | 5 votes |
package akka.util import java.util.Locale import scala.concurrent.duration._ def pretty(includeNanos: Boolean, precision: Int = 4): String = { require(precision > 0, "precision must be > 0") duration match { case d: FiniteDuration ⇒ val nanos = d.toNanos val unit = chooseUnit(nanos) val value = nanos.toDouble / NANOSECONDS.convert(1, unit) s"%.${precision}g %s%s".formatLocal(Locale.ROOT, value, abbreviate(unit), if (includeNanos) s" ($nanos ns)" else "") case Duration.MinusInf ⇒ s"-∞ (minus infinity)" case Duration.Inf ⇒ s"∞ (infinity)" case _ ⇒ "undefined" } } def chooseUnit(nanos: Long): TimeUnit = { val d = nanos.nanos if (d.toDays > 0) DAYS else if (d.toHours > 0) HOURS else if (d.toMinutes > 0) MINUTES else if (d.toSeconds > 0) SECONDS else if (d.toMillis > 0) MILLISECONDS else if (d.toMicros > 0) MICROSECONDS else NANOSECONDS } def abbreviate(unit: TimeUnit): String = unit match { case NANOSECONDS ⇒ "ns" case MICROSECONDS ⇒ "μs" case MILLISECONDS ⇒ "ms" case SECONDS ⇒ "s" case MINUTES ⇒ "min" case HOURS ⇒ "h" case DAYS ⇒ "d" } } }
Example 83
Source File: OapQuerySuite.scala From OAP with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.hive.execution import java.util.{Locale, TimeZone} import org.scalatest.{BeforeAndAfter, Ignore} import org.apache.spark.sql.AnalysisException import org.apache.spark.sql.hive.HiveUtils import org.apache.spark.sql.hive.test.TestHive import org.apache.spark.sql.internal.SQLConf // Ignore because in separate package will encounter problem with shaded spark source. @Ignore class OapQuerySuite extends HiveComparisonTest with BeforeAndAfter { private lazy val originalTimeZone = TimeZone.getDefault private lazy val originalLocale = Locale.getDefault import org.apache.spark.sql.hive.test.TestHive._ // Note: invoke TestHive will create a SparkContext which can't be configured by us. // So be careful this may affect current using SparkContext and cause strange problem. private lazy val originalCrossJoinEnabled = TestHive.conf.crossJoinEnabled override def beforeAll() { super.beforeAll() TestHive.setCacheTables(true) // Timezone is fixed to America/Los_Angeles for those timezone sensitive tests (timestamp_*) TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles")) // Add Locale setting Locale.setDefault(Locale.US) // Ensures that cross joins are enabled so that we can test them TestHive.setConf(SQLConf.CROSS_JOINS_ENABLED, true) TestHive.setConf(HiveUtils.CONVERT_METASTORE_PARQUET, true) } override def afterAll() { try { TestHive.setCacheTables(false) TimeZone.setDefault(originalTimeZone) Locale.setDefault(originalLocale) sql("DROP TEMPORARY FUNCTION IF EXISTS udtf_count2") TestHive.setConf(SQLConf.CROSS_JOINS_ENABLED, originalCrossJoinEnabled) } finally { super.afterAll() } } private def assertDupIndex(body: => Unit): Unit = { val e = intercept[AnalysisException] { body } assert(e.getMessage.toLowerCase.contains("exists")) } test("create hive table in parquet format") { try { sql("create table p_table (key int, val string) stored as parquet") sql("insert overwrite table p_table select * from src") sql("create oindex if not exists p_index on p_table(key)") assert(sql("select val from p_table where key = 238") .collect().head.getString(0) == "val_238") } finally { sql("drop oindex p_index on p_table") sql("drop table p_table") } } test("create duplicate hive table in parquet format") { try { sql("create table p_table1 (key int, val string) stored as parquet") sql("insert overwrite table p_table1 select * from src") sql("create oindex p_index on p_table1(key)") assertDupIndex { sql("create oindex p_index on p_table1(key)") } } finally { sql("drop oindex p_index on p_table1") } } }
Example 84
Source File: Amount.scala From scala-stellar-sdk with Apache License 2.0 | 5 votes |
package stellar.sdk.model import java.math.{MathContext, RoundingMode} import java.util.Locale import cats.data.State import stellar.sdk.model.xdr.{Decode, Encodable, Encode} import scala.util.Try sealed trait Amount extends Encodable { val units: Long val asset: Asset def toDisplayUnits: String = "%.7f".formatLocal(Locale.ROOT, BigDecimal(units) / Amount.toIntegralFactor) def encode: LazyList[Byte] = asset.encode ++ Encode.long(units) } case class NativeAmount(units: Long) extends Amount { override val asset: Asset = NativeAsset override def toString: String = s"$toDisplayUnits XLM" } case class IssuedAmount(units: Long, asset: NonNativeAsset) extends Amount { override def toString: String = s"$toDisplayUnits $asset" } object Amount extends Decode { private val decimalPlaces = 7 private val toIntegralFactor = BigDecimal(math.pow(10, decimalPlaces)) def toBaseUnits(d: Double): Try[Long] = toBaseUnits(BigDecimal(d)) def toBaseUnits(s: String): Try[Long] = Try(BigDecimal(s)).flatMap(toBaseUnits) def toBaseUnits(bd: BigDecimal): Try[Long] = Try { (bd * toIntegralFactor.round(new MathContext(0, RoundingMode.DOWN))).toLongExact } def apply(units: Long, asset: Asset): Amount = { asset match { case NativeAsset => NativeAmount(units) case a: NonNativeAsset => IssuedAmount(units, a) } } def lumens(units: Double): NativeAmount = toBaseUnits(units).map(NativeAmount).getOrElse( throw new IllegalArgumentException(s"Too many digits in fractional portion of $units. Limit is $decimalPlaces") ) def decode: State[Seq[Byte], Amount] = for { asset <- Asset.decode units <- long } yield apply(units, asset) } object IssuedAmount { def decode: State[Seq[Byte], IssuedAmount] = Amount.decode.map(x => x.asInstanceOf[IssuedAmount]) }
Example 85
Source File: JsonSnippets.scala From scala-stellar-sdk with Apache License 2.0 | 5 votes |
package stellar.sdk.model.op import java.time.format.DateTimeFormatter import java.util.Locale import stellar.sdk.model.{Amount, Asset, NonNativeAsset} trait JsonSnippets { val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'") def amountString(a: Amount): String = "%.7f".formatLocal(Locale.ROOT, a.units / math.pow(10, 7)) def amountDocPortion(amount: Amount, label: String = "amount", assetPrefix: String = ""): String = { s""" |"$label":${amountString(amount)} |${asset(amount.asset, assetPrefix)} """.stripMargin } def asset(a: Asset, assetPrefix: String = ""): String = a match { case nn: NonNativeAsset => s""" |"${assetPrefix}asset_type": "${nn.typeString}", |"${assetPrefix}asset_code": "${nn.code}", |"${assetPrefix}asset_issuer": "${nn.issuer.accountId}" """.stripMargin.trim case _ => s""" |"${assetPrefix}asset_type": "native" """.stripMargin.trim } def opt(key: String, value: Option[Any]) = value.map { case v: String => s""""$key":"$v",""" case v: Set[_] => s""""$key":[${ v.map { case s: String => s""""$s"""" case a => a }.mkString(",") }],""" case v => s""""$key":$v,""" }.getOrElse("") }
Example 86
Source File: TradeEffectResponseSpec.scala From scala-stellar-sdk with Apache License 2.0 | 5 votes |
package stellar.sdk.model.response import java.util.Locale import org.json4s.NoTypeHints import org.json4s.native.JsonMethods.parse import org.json4s.native.Serialization import org.scalacheck.Gen import org.specs2.mutable.Specification import stellar.sdk._ import stellar.sdk.model.{Amount, NonNativeAsset} class TradeEffectResponseSpec extends Specification with ArbitraryInput { implicit val formats = Serialization.formats(NoTypeHints) + EffectResponseDeserializer "a trade effect document" should { "parse to a trade effect" >> prop { (id: String, offerId: Long, buyer: KeyPair, bought: Amount, seller: KeyPair, sold: Amount) => val json = doc(id, offerId, buyer, bought, seller, sold) parse(json).extract[EffectResponse] mustEqual EffectTrade(id, offerId, buyer, bought, seller, sold) }.setGen1(Gen.identifier).setGen2(Gen.posNum[Long]) } def doc(id: String, offerId: Long, buyer: PublicKeyOps, bought: Amount, seller: PublicKeyOps, sold: Amount) = { s""" { "_links": { "operation": { "href": "https://horizon-testnet.stellar.org/operations/31161168848490497" }, "succeeds": { "href": "https://horizon-testnet.stellar.org/effects?order=desc&cursor=31161168848490497-2" }, "precedes": { "href": "https://horizon-testnet.stellar.org/effects?order=asc&cursor=31161168848490497-2" } }, "id": "$id", "paging_token": "31161168848490497-2", "account": "${buyer.accountId}", "type": "trade", "type_i": 33, "seller": "${seller.accountId}", "offer_id": $offerId, ${amountDocPortion(sold, sold = true)}, ${amountDocPortion(bought, sold = false)} }""" } def amountDocPortion(amount: Amount, sold: Boolean): String = { val bs = if (sold) "sold" else "bought" amount.asset match { case nn: NonNativeAsset => s""""${bs}_amount": "${amountString(amount)}", |"${bs}_asset_type": "${nn.typeString}", |"${bs}_asset_code": "${nn.code}", |"${bs}_asset_issuer": "${nn.issuer.accountId}" """.stripMargin.trim case _ => s""""${bs}_amount": "${amountString(amount)}", |"${bs}_asset_type": "native" """.stripMargin.trim } } def amountString(a: Amount): String = "%.7f".formatLocal(Locale.ROOT, a.units / math.pow(10, 7)) }
Example 87
Source File: SignerEffectResponseSpec.scala From scala-stellar-sdk with Apache License 2.0 | 5 votes |
package stellar.sdk.model.response import java.util.Locale import org.json4s.NoTypeHints import org.json4s.native.JsonMethods._ import org.json4s.native.Serialization import org.scalacheck.Gen import org.specs2.mutable.Specification import stellar.sdk._ import stellar.sdk.model.Amount class SignerEffectResponseSpec extends Specification with ArbitraryInput { implicit val formats = Serialization.formats(NoTypeHints) + EffectResponseDeserializer "a signer created effect document" should { "parse to a signer created effect" >> prop { (id: String, kp: KeyPair, weight: Short, pubKey: String) => val json = doc(id, kp, "signer_created", weight, "public_key" -> pubKey) parse(json).extract[EffectResponse] mustEqual EffectSignerCreated(id, kp.asPublicKey, weight, pubKey) }.setGen1(Gen.identifier).setGen4(Gen.identifier) } "a signer updated effect document" should { "parse to a signer updated effect" >> prop { (id: String, kp: KeyPair, weight: Short, pubKey: String) => val json = doc(id, kp, "signer_updated", weight, "public_key" -> pubKey) parse(json).extract[EffectResponse] mustEqual EffectSignerUpdated(id, kp.asPublicKey, weight, pubKey) }.setGen1(Gen.identifier).setGen4(Gen.identifier) } "a signer removed effect document" should { "parse to a signer removed effect" >> prop { (id: String, kp: KeyPair, pubKey: String) => val json = doc(id, kp, "signer_removed", 0, "public_key" -> pubKey) parse(json).extract[EffectResponse] mustEqual EffectSignerRemoved(id, kp.asPublicKey, pubKey) }.setGen1(Gen.identifier).setGen3(Gen.identifier) } def doc(id: String, kp: KeyPair, tpe: String, weight: Short, extra: (String, Any)*) = s""" |{ | "_links": { | "operation": { | "href": "https://horizon-testnet.stellar.org/operations/10157597659144" | }, | "succeeds": { | "href": "https://horizon-testnet.stellar.org/effects?order=desc\u0026cursor=10157597659144-2" | }, | "precedes": { | "href": "https://horizon-testnet.stellar.org/effects?order=asc\u0026cursor=10157597659144-2" | } | }, | "id": "$id", | "paging_token": "10157597659144-2", | "account": "${kp.accountId}", | "weight": $weight | "type": "$tpe", | "type_i": 10, | ${ extra.map { case (k, v: String) => s""""$k": "$v"""".trim case (k, v) => s""""$k": $v""".trim }.mkString(", ") } |} """.stripMargin def amountString(a: Amount): String = "%.7f".formatLocal(Locale.ROOT, a.units / math.pow(10, 7)) }
Example 88
Source File: OfferResponseSpec.scala From scala-stellar-sdk with Apache License 2.0 | 5 votes |
package stellar.sdk.model.response import java.time.ZoneId import java.time.format.DateTimeFormatter import java.util.Locale import org.json4s.NoTypeHints import org.json4s.native.JsonMethods.parse import org.json4s.native.Serialization import org.specs2.mutable.Specification import stellar.sdk.model.{Amount, Asset, NonNativeAsset} import stellar.sdk.ArbitraryInput class OfferResponseSpec extends Specification with ArbitraryInput { implicit val formats = Serialization.formats(NoTypeHints) + OfferRespDeserializer private val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'").withZone(ZoneId.of("UTC")) "an offer response document" should { "parse to an offer response" >> prop { or: OfferResponse => val json = s""" |{ | "_links": { | "self": { | "href": "https://horizon-testnet.stellar.org/offers/101542" | }, | "offer_maker": { | "href": "https://horizon-testnet.stellar.org/accounts/GCXYKQF35XWATRB6AWDDV2Y322IFU2ACYYN5M2YB44IBWAIITQ4RYPXK" | } | }, | "id": ${or.id}, | "paging_token": "101542", | "seller": "${or.seller.accountId}", | "selling": { | ${assetJson(or.selling.asset)} | }, | "buying": { | ${assetJson(or.buying)} | }, | "amount": "${amountString(or.selling)}", | "price_r": { | "n": ${or.price.n}, | "d": ${or.price.d} | }, | "price": "3.0300000", | "last_modified_ledger": ${or.lastModifiedLedger}, | "last_modified_time": "${formatter.format(or.lastModifiedTime)}" |} | """.stripMargin parse(json).extract[OfferResponse] mustEqual or } } def assetJson(asset: Asset) = asset match { case nn: NonNativeAsset => s""" |"asset_type": "${nn.typeString}", |"asset_code": "${nn.code}", |"asset_issuer": "${nn.issuer.accountId}" """.stripMargin.trim case _ => """"asset_type": "native"""" } def amountString(a: Amount): String = "%.7f".formatLocal(Locale.ROOT, a.units / math.pow(10, 7)) }
Example 89
Source File: TrustLineEffectResponseSpec.scala From scala-stellar-sdk with Apache License 2.0 | 5 votes |
package stellar.sdk.model.response import java.util.Locale import org.json4s.NoTypeHints import org.json4s.native.JsonMethods._ import org.json4s.native.Serialization import org.scalacheck.Gen import org.specs2.mutable.Specification import stellar.sdk._ import stellar.sdk.model.{Amount, IssuedAmount, NonNativeAsset} class TrustLineEffectResponseSpec extends Specification with ArbitraryInput { implicit val formats = Serialization.formats(NoTypeHints) + EffectResponseDeserializer "a trustline created effect document" should { "parse to a trustline created effect" >> prop { (id: String, accn: KeyPair, asset: NonNativeAsset, limit: Long) => val json = doc(id, "trustline_created", accn, asset, limit) parse(json).extract[EffectResponse] mustEqual EffectTrustLineCreated(id, accn.asPublicKey, IssuedAmount(limit, asset)) }.setGen1(Gen.identifier).setGen4(Gen.posNum[Long]) } "a trustline updated effect document" should { "parse to a trustline updated effect" >> prop { (id: String, accn: KeyPair, asset: NonNativeAsset, limit: Long) => val json = doc(id, "trustline_updated", accn, asset, limit) parse(json).extract[EffectResponse] mustEqual EffectTrustLineUpdated(id, accn.asPublicKey, IssuedAmount(limit, asset)) }.setGen1(Gen.identifier).setGen4(Gen.posNum[Long]) } "a trustline removed effect document" should { "parse to a trustline removed effect" >> prop { (id: String, accn: KeyPair, asset: NonNativeAsset) => val json = doc(id, "trustline_removed", accn, asset, 0) parse(json).extract[EffectResponse] mustEqual EffectTrustLineRemoved(id, accn.asPublicKey, asset) }.setGen1(Gen.identifier) } def doc(id: String, tpe: String, accn: PublicKeyOps, asset: NonNativeAsset, limit: Long) = { s""" |{ | "_links": { | "operation": { | "href": "https://horizon-testnet.stellar.org/operations/10157597659144" | }, | "succeeds": { | "href": "https://horizon-testnet.stellar.org/effects?order=desc\u0026cursor=10157597659144-2" | }, | "precedes": { | "href": "https://horizon-testnet.stellar.org/effects?order=asc\u0026cursor=10157597659144-2" | } | }, | "id": "$id", | "paging_token": "10157597659144-2", | "account": "${accn.accountId}", | "type": "$tpe", | "type_i": 20, | "asset_type": "${asset.typeString}", | "asset_code": "${asset.code}", | "asset_issuer": "${asset.issuer.accountId}", | "limit": "${limit / math.pow(10, 7)}" |} """.stripMargin } def amountString(a: Amount): String = "%.7f".formatLocal(Locale.ROOT, a.units / math.pow(10, 7)) }
Example 90
Source File: FsEntityValidator.scala From spark-atlas-connector with Apache License 2.0 | 5 votes |
package com.hortonworks.spark.atlas.sql.testhelper import java.io.File import java.util.Locale import com.hortonworks.spark.atlas.AtlasEntityReadHelper.{getStringAttribute, listAtlasEntitiesAsType} import com.hortonworks.spark.atlas.{SACAtlasEntityWithDependencies, SACAtlasReferenceable} import com.hortonworks.spark.atlas.types.external import org.apache.atlas.model.instance.AtlasEntity import org.scalatest.FunSuite trait FsEntityValidator extends FunSuite { def findFsEntities(entities: Seq[AtlasEntity], dir: File): Seq[AtlasEntity] = { entities.filter { e => getStringAttribute(e, "qualifiedName").toLowerCase(Locale.ROOT).contains( dir.getAbsolutePath.toLowerCase(Locale.ROOT)) } } def assertEntitiesFsType( dirToExpectedCount: Map[File, Int], entities: Set[AtlasEntity]): Unit = { val fsEntities = listAtlasEntitiesAsType(entities.toSeq, external.FS_PATH_TYPE_STRING) assert(fsEntities.size === dirToExpectedCount.values.sum) dirToExpectedCount.foreach { case (dir, expectedCnt) => val fsEntitiesFiltered = fsEntities.filter { e => getStringAttribute(e, "qualifiedName").toLowerCase(Locale.ROOT).contains( dir.getAbsolutePath.toLowerCase(Locale.ROOT)) } assert(fsEntitiesFiltered.length === expectedCnt) } } def assertFsEntity(ref: SACAtlasReferenceable, path: String): Unit = { val inputEntity = ref.asInstanceOf[SACAtlasEntityWithDependencies].entity assertFsEntity(inputEntity, path) } def assertFsEntity(entity: AtlasEntity, path: String): Unit = { assert(entity.getTypeName === external.FS_PATH_TYPE_STRING) assert(entity.getAttribute("name") === path.toLowerCase) } }
Example 91
Source File: PMMLModelExport.scala From sparkoscope with Apache License 2.0 | 5 votes |
package org.apache.spark.mllib.pmml.export import java.text.SimpleDateFormat import java.util.{Date, Locale} import scala.beans.BeanProperty import org.dmg.pmml.{Application, Header, PMML, Timestamp} private[mllib] trait PMMLModelExport { @BeanProperty val pmml: PMML = { val version = getClass.getPackage.getImplementationVersion val app = new Application("Apache Spark MLlib").setVersion(version) val timestamp = new Timestamp() .addContent(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.US).format(new Date())) val header = new Header() .setApplication(app) .setTimestamp(timestamp) new PMML("4.2", header, null) } }
Example 92
Source File: SQLMetrics.scala From sparkoscope with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution.metric import java.text.NumberFormat import java.util.Locale import org.apache.spark.SparkContext import org.apache.spark.scheduler.AccumulableInfo import org.apache.spark.util.{AccumulatorContext, AccumulatorV2, Utils} class SQLMetric(val metricType: String, initValue: Long = 0L) extends AccumulatorV2[Long, Long] { // This is a workaround for SPARK-11013. // We may use -1 as initial value of the accumulator, if the accumulator is valid, we will // update it at the end of task and the value will be at least 0. Then we can filter out the -1 // values before calculate max, min, etc. private[this] var _value = initValue private var _zeroValue = initValue override def copy(): SQLMetric = { val newAcc = new SQLMetric(metricType, _value) newAcc._zeroValue = initValue newAcc } override def reset(): Unit = _value = _zeroValue override def merge(other: AccumulatorV2[Long, Long]): Unit = other match { case o: SQLMetric => _value += o.value case _ => throw new UnsupportedOperationException( s"Cannot merge ${this.getClass.getName} with ${other.getClass.getName}") } override def isZero(): Boolean = _value == _zeroValue override def add(v: Long): Unit = _value += v def +=(v: Long): Unit = _value += v override def value: Long = _value // Provide special identifier as metadata so we can tell that this is a `SQLMetric` later override def toInfo(update: Option[Any], value: Option[Any]): AccumulableInfo = { new AccumulableInfo( id, name, update, value, true, true, Some(AccumulatorContext.SQL_ACCUM_IDENTIFIER)) } } object SQLMetrics { private val SUM_METRIC = "sum" private val SIZE_METRIC = "size" private val TIMING_METRIC = "timing" def createMetric(sc: SparkContext, name: String): SQLMetric = { val acc = new SQLMetric(SUM_METRIC) acc.register(sc, name = Some(name), countFailedValues = false) acc } def stringValue(metricsType: String, values: Seq[Long]): String = { if (metricsType == SUM_METRIC) { val numberFormat = NumberFormat.getIntegerInstance(Locale.US) numberFormat.format(values.sum) } else { val strFormat: Long => String = if (metricsType == SIZE_METRIC) { Utils.bytesToString } else if (metricsType == TIMING_METRIC) { Utils.msDurationToString } else { throw new IllegalStateException("unexpected metrics type: " + metricsType) } val validValues = values.filter(_ >= 0) val Seq(sum, min, med, max) = { val metric = if (validValues.isEmpty) { Seq.fill(4)(0L) } else { val sorted = validValues.sorted Seq(sorted.sum, sorted(0), sorted(validValues.length / 2), sorted(validValues.length - 1)) } metric.map(strFormat) } s"\n$sum ($min, $med, $max)" } } }
Example 93
Source File: JacksonMessageWriter.scala From sparkoscope with Apache License 2.0 | 5 votes |
package org.apache.spark.status.api.v1 import java.io.OutputStream import java.lang.annotation.Annotation import java.lang.reflect.Type import java.nio.charset.StandardCharsets import java.text.SimpleDateFormat import java.util.{Calendar, Locale, SimpleTimeZone} import javax.ws.rs.Produces import javax.ws.rs.core.{MediaType, MultivaluedMap} import javax.ws.rs.ext.{MessageBodyWriter, Provider} import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.databind.{ObjectMapper, SerializationFeature} @Provider @Produces(Array(MediaType.APPLICATION_JSON)) private[v1] class JacksonMessageWriter extends MessageBodyWriter[Object]{ val mapper = new ObjectMapper() { override def writeValueAsString(t: Any): String = { super.writeValueAsString(t) } } mapper.registerModule(com.fasterxml.jackson.module.scala.DefaultScalaModule) mapper.enable(SerializationFeature.INDENT_OUTPUT) mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL) mapper.setDateFormat(JacksonMessageWriter.makeISODateFormat) override def isWriteable( aClass: Class[_], `type`: Type, annotations: Array[Annotation], mediaType: MediaType): Boolean = { true } override def writeTo( t: Object, aClass: Class[_], `type`: Type, annotations: Array[Annotation], mediaType: MediaType, multivaluedMap: MultivaluedMap[String, AnyRef], outputStream: OutputStream): Unit = { t match { case ErrorWrapper(err) => outputStream.write(err.getBytes(StandardCharsets.UTF_8)) case _ => mapper.writeValue(outputStream, t) } } override def getSize( t: Object, aClass: Class[_], `type`: Type, annotations: Array[Annotation], mediaType: MediaType): Long = { -1L } } private[spark] object JacksonMessageWriter { def makeISODateFormat: SimpleDateFormat = { val iso8601 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'GMT'", Locale.US) val cal = Calendar.getInstance(new SimpleTimeZone(0, "GMT")) iso8601.setCalendar(cal) iso8601 } }
Example 94
Source File: SimpleDateParam.scala From sparkoscope with Apache License 2.0 | 5 votes |
package org.apache.spark.status.api.v1 import java.text.{ParseException, SimpleDateFormat} import java.util.{Locale, TimeZone} import javax.ws.rs.WebApplicationException import javax.ws.rs.core.Response import javax.ws.rs.core.Response.Status private[v1] class SimpleDateParam(val originalValue: String) { val timestamp: Long = { val format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSz", Locale.US) try { format.parse(originalValue).getTime() } catch { case _: ParseException => val gmtDay = new SimpleDateFormat("yyyy-MM-dd", Locale.US) gmtDay.setTimeZone(TimeZone.getTimeZone("GMT")) try { gmtDay.parse(originalValue).getTime() } catch { case _: ParseException => throw new WebApplicationException( Response .status(Status.BAD_REQUEST) .entity("Couldn't parse date: " + originalValue) .build() ) } } } }
Example 95
Source File: CsvSink.scala From sparkoscope with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.io.File import java.util.{Locale, Properties} import java.util.concurrent.TimeUnit import com.codahale.metrics.{CsvReporter, MetricRegistry} import org.apache.spark.SecurityManager import org.apache.spark.metrics.MetricsSystem private[spark] class CsvSink(val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val CSV_KEY_PERIOD = "period" val CSV_KEY_UNIT = "unit" val CSV_KEY_DIR = "directory" val CSV_DEFAULT_PERIOD = 10 val CSV_DEFAULT_UNIT = "SECONDS" val CSV_DEFAULT_DIR = "/tmp/" val pollPeriod = Option(property.getProperty(CSV_KEY_PERIOD)) match { case Some(s) => s.toInt case None => CSV_DEFAULT_PERIOD } val pollUnit: TimeUnit = Option(property.getProperty(CSV_KEY_UNIT)) match { case Some(s) => TimeUnit.valueOf(s.toUpperCase()) case None => TimeUnit.valueOf(CSV_DEFAULT_UNIT) } MetricsSystem.checkMinimalPollingPeriod(pollUnit, pollPeriod) val pollDir = Option(property.getProperty(CSV_KEY_DIR)) match { case Some(s) => s case None => CSV_DEFAULT_DIR } val reporter: CsvReporter = CsvReporter.forRegistry(registry) .formatFor(Locale.US) .convertDurationsTo(TimeUnit.MILLISECONDS) .convertRatesTo(TimeUnit.SECONDS) .build(new File(pollDir)) override def start() { reporter.start(pollPeriod, pollUnit) } override def stop() { reporter.stop() } override def report() { reporter.report() } }
Example 96
Source File: ComposedDataset.scala From uberdata with Apache License 2.0 | 5 votes |
package eleflow.uberdata.data import java.text.{DecimalFormatSymbols, DecimalFormat} import java.util.Locale import eleflow.uberdata.core.data.Dataset import org.apache.spark.rdd.RDD class ComposedDataset(train: Dataset, test: Dataset, result: Option[RDD[(Double, Double)]]) { def exportResult(path: String, locale: Locale = Locale.ENGLISH) = { val formatSymbols = new DecimalFormatSymbols(locale) val formatter = new DecimalFormat("###############.################", formatSymbols) result.map( res => res .coalesce(1) .map { case (id, value) => s"${BigDecimal(id.toString).toString},${formatter.format(value)}" } .saveAsTextFile(path) ) getOrElse println("No result to export") } }
Example 97
Source File: ControllerBase.scala From scuruto with MIT License | 5 votes |
package controller import java.util.Locale import lib.{ SessionAttribute, Util } import model.User import skinny.PermittedStrongParameters import skinny.controller.feature.{ FlashFeature, LocaleFeature, RequestScopeFeature } import skinny.filter._ import skinny.micro.SkinnyMicroBase import skinny.micro.context.SkinnyContext import skinny.micro.contrib.CSRFTokenSupport import skinny.validator.MapValidator protected def debugLoggingParameters(form: MapValidator, id: Option[Long] = None) = { if (logger.isDebugEnabled) { val forId = id.map { id => s" for [id -> ${id}]" }.getOrElse("") val params = form.paramMap.map { case (name, value) => s"${name} -> '${value}'" }.mkString("[", ", ", "]") logger.debug(s"Parameters${forId}: ${params}") } } protected def debugLoggingPermittedParameters(parameters: PermittedStrongParameters, id: Option[Long] = None) = { if (logger.isDebugEnabled) { val forId = id.map { id => s" for [id -> ${id}]" }.getOrElse("") val params = parameters.params.map { case (name, (v, t)) => s"${name} -> '${v}' as ${t}" }.mkString("[", ", ", "]") logger.debug(s"Permitted parameters${forId}: ${params}") } } }
Example 98
Source File: RootController.scala From scuruto with MIT License | 5 votes |
package controller import java.util.Locale import model.typebinder.ArticleId import operation.ArticleOperation class RootController extends ApplicationController { protectFromForgery() // -------------- // GET / def index = { val articleOperation: ArticleOperation = inject[ArticleOperation] loginUser match { case Some(user) => { set("items", articleOperation.getPage()) set("sidebar", articleOperation.getIndexSidebar(user)) render(s"/articles/list") } case _ => { val locale = request.getLocale if (locale == null || locale != Locale.JAPANESE) { setCurrentLocale("en") } set("ref", params.get("ref")) render(s"/login") } } } // -------------- // GET /more/{maxId} def more(maxId: ArticleId) = { loginUser match { case Some(user) => { val articleOperation: ArticleOperation = inject[ArticleOperation] set("items", articleOperation.getPage(maxId)) render(s"/articles/scroll") } case _ => { val locale = request.getLocale.toString if (locale != "ja") { setCurrentLocale("en") } render(s"/login") } } } }
Example 99
Source File: CsvSink.scala From SparkCore with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.io.File import java.util.{Locale, Properties} import java.util.concurrent.TimeUnit import com.codahale.metrics.{CsvReporter, MetricRegistry} import org.apache.spark.SecurityManager import org.apache.spark.metrics.MetricsSystem private[spark] class CsvSink(val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val CSV_KEY_PERIOD = "period" val CSV_KEY_UNIT = "unit" val CSV_KEY_DIR = "directory" val CSV_DEFAULT_PERIOD = 10 val CSV_DEFAULT_UNIT = "SECONDS" val CSV_DEFAULT_DIR = "/tmp/" val pollPeriod = Option(property.getProperty(CSV_KEY_PERIOD)) match { case Some(s) => s.toInt case None => CSV_DEFAULT_PERIOD } val pollUnit: TimeUnit = Option(property.getProperty(CSV_KEY_UNIT)) match { case Some(s) => TimeUnit.valueOf(s.toUpperCase()) case None => TimeUnit.valueOf(CSV_DEFAULT_UNIT) } MetricsSystem.checkMinimalPollingPeriod(pollUnit, pollPeriod) val pollDir = Option(property.getProperty(CSV_KEY_DIR)) match { case Some(s) => s case None => CSV_DEFAULT_DIR } val reporter: CsvReporter = CsvReporter.forRegistry(registry) .formatFor(Locale.US) .convertDurationsTo(TimeUnit.MILLISECONDS) .convertRatesTo(TimeUnit.SECONDS) .build(new File(pollDir)) override def start() { reporter.start(pollPeriod, pollUnit) } override def stop() { reporter.stop() } override def report() { reporter.report() } }
Example 100
Source File: Timer.scala From Adenium with Apache License 2.0 | 5 votes |
package com.adenium.utils import java.time.{Instant, ZoneId} import java.time.format.DateTimeFormatter import java.util.Locale import com.adenium.utils.May._ object Timer { def currentMillis: String = Instant.now().toEpochMilli.toString ////////////////////////////////////////////////// def Timer[A] ( f : => A) : ( A, Long) = { val s = System.currentTimeMillis val r = f val e = System.currentTimeMillis ( r, e-s ) } def TimeLog[A]( f : => A)(msg: String): A = { val ( r, t) = Timer( f) Logger.logWarning( s"[ Time spent ] $t in $msg") r } def UnitTimer( f : => Unit) : Long = { val ( _, t) = Timer( f) t } }
Example 101
Source File: JdbcUtil.scala From bahir with Apache License 2.0 | 5 votes |
package org.apache.bahir.sql.streaming.jdbc import java.sql.{Connection, PreparedStatement} import java.util.Locale import org.apache.spark.sql.Row import org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils import org.apache.spark.sql.jdbc.{JdbcDialect, JdbcType} import org.apache.spark.sql.types._ import org.apache.spark.unsafe.types.UTF8String object JdbcUtil { def getJdbcType(dt: DataType, dialect: JdbcDialect): JdbcType = { dialect.getJDBCType(dt).orElse(JdbcUtils.getCommonJDBCType(dt)).getOrElse( throw new IllegalArgumentException(s"Can't get JDBC type for ${dt.simpleString}")) } // A `JDBCValueSetter` is responsible for setting a value from `Row` into a field for // `PreparedStatement`. The last argument `Int` means the index for the value to be set // in the SQL statement and also used for the value in `Row`. type JDBCValueSetter = (PreparedStatement, Row, Int) => Unit def makeSetter( conn: Connection, dialect: JdbcDialect, dataType: DataType): JDBCValueSetter = dataType match { case IntegerType => (stmt: PreparedStatement, row: Row, pos: Int) => stmt.setInt(pos + 1, row.getInt(pos)) case LongType => (stmt: PreparedStatement, row: Row, pos: Int) => stmt.setLong(pos + 1, row.getLong(pos)) case DoubleType => (stmt: PreparedStatement, row: Row, pos: Int) => stmt.setDouble(pos + 1, row.getDouble(pos)) case FloatType => (stmt: PreparedStatement, row: Row, pos: Int) => stmt.setFloat(pos + 1, row.getFloat(pos)) case ShortType => (stmt: PreparedStatement, row: Row, pos: Int) => stmt.setInt(pos + 1, row.getShort(pos)) case ByteType => (stmt: PreparedStatement, row: Row, pos: Int) => stmt.setInt(pos + 1, row.getByte(pos)) case BooleanType => (stmt: PreparedStatement, row: Row, pos: Int) => stmt.setBoolean(pos + 1, row.getBoolean(pos)) case StringType => (stmt: PreparedStatement, row: Row, pos: Int) => val strValue = row.get(pos) match { case str: UTF8String => str.toString case str: String => str } stmt.setString(pos + 1, strValue) case BinaryType => (stmt: PreparedStatement, row: Row, pos: Int) => stmt.setBytes(pos + 1, row.getAs[Array[Byte]](pos)) case TimestampType => (stmt: PreparedStatement, row: Row, pos: Int) => stmt.setTimestamp(pos + 1, row.getAs[java.sql.Timestamp](pos)) case DateType => (stmt: PreparedStatement, row: Row, pos: Int) => stmt.setDate(pos + 1, row.getAs[java.sql.Date](pos)) case t: DecimalType => (stmt: PreparedStatement, row: Row, pos: Int) => stmt.setBigDecimal(pos + 1, row.getDecimal(pos)) case ArrayType(et, _) => // remove type length parameters from end of type name val typeName = getJdbcType(et, dialect).databaseTypeDefinition .toLowerCase(Locale.ROOT).split("\\(")(0) (stmt: PreparedStatement, row: Row, pos: Int) => val array = conn.createArrayOf( typeName, row.getSeq[AnyRef](pos).toArray) stmt.setArray(pos + 1, array) case _ => (_: PreparedStatement, _: Row, pos: Int) => throw new IllegalArgumentException( s"Can't translate non-null value for field $pos") } }
Example 102
Source File: TestFunctionality.scala From incubator-daffodil with Apache License 2.0 | 5 votes |
package org.apache.daffodil.functionality import java.util.Locale import org.junit.Assert import org.junit.Test import com.ibm.icu.text.SimpleDateFormat import com.ibm.icu.util.Calendar import com.ibm.icu.util.GregorianCalendar class TestFunctionality { @Test def test_calendar_format_timezone(): Unit = { val value = "08:43:00.000000-08:00" val cal = new GregorianCalendar() val pos = new java.text.ParsePosition(0) val patternIn = "HH:mm:ss.SSSSSSxxxxx" new com.ibm.icu.text.SimpleDateFormat(patternIn).parse(value, cal, pos) cal.getTime val pattern = "hh:mm.V" val locale = Locale.ENGLISH val calendar = Calendar.getInstance(locale) calendar.clear() val formatter = new SimpleDateFormat(pattern, locale) // Make sure you've done 'sbt update-classifiers' to pull in all the source. // Step through the format here and into SimpleDateFormat -> case: 29 aka V -> TimeZoneFormat.format // It would appear as though the SimpleTimeZone GMT-0800 is not recognized in the ICU library // and so returns this 'unk' value rather than 'uslax'. Even though -0800 GMT IS uslax!!! :( val str = formatter.format(cal) //Console.out.println(str) Assert.assertEquals("08:43.unk", str) } }
Example 103
Source File: OperatorConstants.scala From cloudstate with Apache License 2.0 | 5 votes |
package io.cloudstate.operator import java.util.Locale object OperatorConstants { final val CloudStateGroup = "cloudstate.io" final val CloudStateApiVersionNumber = "v1alpha1" final val CloudStateApiVersion = s"$CloudStateGroup/$CloudStateApiVersionNumber" final val StatefulServiceKind = "StatefulService" final val StatefulStoreLabel = s"$CloudStateGroup/statefulStore" final val StatefulServiceLabel = s"$CloudStateGroup/statefulService" final val StatefulServiceUidLabel = s"$CloudStateGroup/statefulServiceUID" final val KnativeServingGroup = "serving.knative.dev" final val KnativeServingVersion = "v1alpha1" final val KnativeServingApiVersion = s"$KnativeServingGroup/$KnativeServingVersion" final val RevisionKind = "Revision" final val RevisionLabel = s"$KnativeServingGroup/${RevisionKind.toLowerCase(Locale.ROOT)}" final val ConfigurationLabel = s"$KnativeServingGroup/configuration" final val ServiceLabel = s"$KnativeServingGroup/service" final val RevisionUidLabel = s"$KnativeServingGroup/revisionUID" final val LastPinnedLabel = s"$KnativeServingGroup/lastPinned" final val DeployerKind = "Deployer" final val ConditionOk = "Ok" final val ConditionResourcesAvailable = "ResourcesAvailable" final val ConditionResourcesAvailableNotOwned = "NotOwned" final val KnativeServingDeployerName = "KnativeServing" final val CloudStateDeployerName = "CloudState" final val StatefulStoreConditionType = "StatefulStoreValid" final val TrueStatus = "True" final val FalseStatus = "False" final val UnknownStatus = "Unknown" final val PodReaderRoleName = "cloudstate-pod-reader" final val PodReaderRoleBindingName = "cloudstate-read-pods" final val DeploymentScalerRoleName = "cloudstate-deployment-scaler" final val DeploymentScalerRoleBindingName = "cloudstate-scale-deployment" final val CassandraStatefulStoreType = "Cassandra" final val InMemoryStatefulStoreType = "InMemory" final val UnmanagedStatefulStoreDeployment = "Unmanaged" final val UserContainerName = "user-container" final val UserPortName = "user-port" final val DefaultUserPort = 8080 final val UserPortEnvVar = "PORT" final val KnativeRevisionEnvVar = "K_REVISION" final val KnativeConfigruationEnvVar = "K_CONFIGURATION" final val KnativeServiceEnvVar = "K_SERVICE" final val KubernetesManagedByLabel = "app.kubernetes.io/managed-by" final val ProtocolH2c = "h2c" final val KnativeSidecarPortName = "queue-port" final val KnativeSidecarHttpPort = 8012 final val KnativeSidecarH2cPort = 8013 final val AkkaManagementPort = 8558 final val AkkaRemotingPort = 2552 final val MetricsPort = 9090 final val MetricsPortName = "queue-metrics" }
Example 104
Source File: httpserverplugin_staticfile.scala From scalabpe with Apache License 2.0 | 5 votes |
package scalabpe.plugin.http import java.io.File import java.net.URLEncoder import java.text.SimpleDateFormat import java.util.Calendar import java.util.GregorianCalendar import java.util.Locale import java.util.TimeZone import scala.collection.mutable.HashMap import org.jboss.netty.handler.codec.http.HttpHeaders import scalabpe.core.HashMapStringAny class StaticFilePlugin extends HttpServerPlugin with HttpServerStaticFilePlugin { val ETAG_TAG = "etag" val EXPIRE_TAG = "expire" val ATTACHMENT = "attachment" val FILENAME = "filename" val HTTP_DATE_FORMAT = "EEE, dd MMM yyyy HH:mm:ss zzz"; val HTTP_DATE_GMT_TIMEZONE = "GMT"; val df_tl = new ThreadLocal[SimpleDateFormat]() { override def initialValue(): SimpleDateFormat = { val df = new SimpleDateFormat(HTTP_DATE_FORMAT, Locale.US) df.setTimeZone(TimeZone.getTimeZone(HTTP_DATE_GMT_TIMEZONE)); df } } def generateStaticFile(serviceId: Int, msgId: Int, errorCode: Int, errorMessage: String, body: HashMapStringAny, pluginParam: String, headers: HashMap[String, String]): String = { if (body.ns(FILENAME) == "") { return null } val filename = body.ns(FILENAME) if (!new File(filename).exists()) { return null } if (body.ns(ETAG_TAG) != "") { headers.put("ETag", body.ns(ETAG_TAG)) } if (body.ns(EXPIRE_TAG) != "") { body.i(EXPIRE_TAG) match { case 0 | -1 => headers.put(HttpHeaders.Names.CACHE_CONTROL, "no-cache") case n => // seconds val time = new GregorianCalendar(); time.add(Calendar.SECOND, n); headers.put(HttpHeaders.Names.EXPIRES, df_tl.get.format(time.getTime())); headers.put(HttpHeaders.Names.CACHE_CONTROL, "max-age=" + n); } } val ext = parseExt(filename) if (ext != "") body.put("__file_ext__", ext) if (body.ns(ATTACHMENT, "1") == "1") { val filename = body.ns(FILENAME) val v = "attachment; filename=\"%s\"".format(URLEncoder.encode(parseFilename(filename), "UTF-8")) headers.put("Content-Disposition", v) } filename } def parseFilename(name: String): String = { val p = name.lastIndexOf("/") if (p < 0) return name name.substring(p + 1) } def parseExt(name: String): String = { val p = name.lastIndexOf(".") if (p < 0) return "" name.substring(p + 1).toLowerCase() } }
Example 105
Source File: ChecksumType.scala From coursier with Apache License 2.0 | 5 votes |
package coursier.publish.checksum import java.math.BigInteger import java.util.Locale sealed abstract class ChecksumType( val name: String, val extension: String, val size: Int ) extends Product with Serializable { private val firstInvalidValue = BigInteger.valueOf(16L).pow(size) def validValue(value: BigInteger): Boolean = value.compareTo(BigInteger.ZERO) >= 0 && value.compareTo(firstInvalidValue) < 0 } object ChecksumType { case object SHA1 extends ChecksumType("sha-1", "sha1", 40) case object MD5 extends ChecksumType("md5", "md5", 32) val all = Seq(SHA1, MD5) val map = all.map(c => c.name -> c).toMap def parse(s: String): Either[String, ChecksumType] = map .get(s.toLowerCase(Locale.ROOT)) .toRight(s"Unrecognized checksum: $s") }
Example 106
Source File: EnvVarUpdater.scala From coursier with Apache License 2.0 | 5 votes |
package coursier.env import java.util.Locale abstract class EnvVarUpdater { def applyUpdate(update: EnvironmentUpdate): Boolean def tryRevertUpdate(update: EnvironmentUpdate): Boolean } object EnvVarUpdater { def osSpecificUpdater(os: String): EnvVarUpdater = { val isWindows = os.toLowerCase(Locale.ROOT).contains("windows") if (isWindows) WindowsEnvVarUpdater() else ProfileUpdater() } def osSpecificUpdater(): EnvVarUpdater = osSpecificUpdater(Option(System.getProperty("os.name")).getOrElse("")) }
Example 107
Source File: RefreshDisplay.scala From coursier with Apache License 2.0 | 5 votes |
package coursier.cache.loggers import java.io.Writer import java.util.Locale import scala.concurrent.duration.Duration trait RefreshDisplay { // note about concurrency: newEntry / removeEntry may be called concurrently to update, and the update arguments // may be out-of-sync with them def newEntry(out: Writer, url: String, info: RefreshInfo): Unit = () def removeEntry(out: Writer, url: String, info: RefreshInfo): Unit = () def sizeHint(n: Int): Unit = () def update( out: Writer, done: Seq[(String, RefreshInfo)], downloads: Seq[(String, RefreshInfo)], changed: Boolean ): Unit def stop(out: Writer): Unit = () def refreshInterval: Duration } object RefreshDisplay { private lazy val isWindows: Boolean = sys.props .get("os.name") .map(_.toLowerCase(Locale.ROOT)) .exists(_.contains("windows")) def truncated(s: String, width: Int): String = if (s.length <= width) s else if (isWindows) // seems unicode character '…' isn't fine in Windows terminal, plus width is actually shorter (scrollbar?) s.take(width - 4) + "..." else s.take(width - 1) + "…" }
Example 108
Source File: PlatformTestHelpers.scala From coursier with Apache License 2.0 | 5 votes |
package coursier import java.math.BigInteger import java.nio.charset.StandardCharsets import java.nio.file.{Files, Paths} import java.security.MessageDigest import java.util.Locale import coursier.cache.{Cache, MockCache} import coursier.paths.Util import coursier.util.{Sync, Task} import scala.concurrent.{ExecutionContext, Future} abstract class PlatformTestHelpers { private lazy val pool = Sync.fixedThreadPool(6) private val mockDataLocation = { val dir = Paths.get("modules/tests/metadata") assert(Files.isDirectory(dir)) dir } val handmadeMetadataLocation = { val dir = Paths.get("modules/tests/handmade-metadata/data") assert(Files.isDirectory(dir)) dir } val handmadeMetadataBase = handmadeMetadataLocation .toAbsolutePath .toFile // .toFile.toURI gives file:/ URIs, whereas .toUri gives file:/// (the former appears in some test fixtures now) .toURI .toASCIIString .stripSuffix("/") + "/" val writeMockData = Option(System.getenv("FETCH_MOCK_DATA")) .exists(s => s == "1" || s.toLowerCase(Locale.ROOT) == "true") val cache: Cache[Task] = MockCache.create[Task](mockDataLocation, pool = pool, writeMissing = writeMockData) .withDummyArtifact(_.url.endsWith(".jar")) val handmadeMetadataCache: Cache[Task] = MockCache.create[Task](handmadeMetadataLocation, pool = pool) val cacheWithHandmadeMetadata: Cache[Task] = MockCache.create[Task](mockDataLocation, pool = pool, Seq(handmadeMetadataLocation), writeMissing = writeMockData) .withDummyArtifact(_.url.endsWith(".jar")) def textResource(path: String)(implicit ec: ExecutionContext): Future[String] = Future { val p = Paths.get(path) val b = Files.readAllBytes(p) new String(b, StandardCharsets.UTF_8) } def maybeWriteTextResource(path: String, content: String): Unit = { val p = Paths.get(path) Util.createDirectories(p.getParent) Files.write(p, content.getBytes(StandardCharsets.UTF_8)) } def sha1(s: String): String = { val md = MessageDigest.getInstance("SHA-1") val b = md.digest(s.getBytes(StandardCharsets.UTF_8)) new BigInteger(1, b).toString(16) } }
Example 109
Source File: Confirm.scala From coursier with Apache License 2.0 | 5 votes |
package coursier.cli.setup import java.io.{InputStream, PrintStream} import java.util.{Locale, Scanner} import coursier.util.Task import dataclass.data import scala.annotation.tailrec trait Confirm { def confirm(message: String, default: Boolean): Task[Boolean] } object Confirm { @data class ConsoleInput( in: InputStream = System.in, out: PrintStream = System.err, locale: Locale = Locale.getDefault, @since indent: Int = 0 ) extends Confirm { private val marginOpt = if (indent > 0) Some(" " * indent) else None def confirm(message: String, default: Boolean): Task[Boolean] = Task.delay { val choice = if (default) "[Y/n]" else "[y/N]" val message0 = marginOpt match { case None => message case Some(margin) => message.linesIterator.map(margin + _).mkString(System.lineSeparator()) } out.print(s"$message0 $choice ") @tailrec def loop(): Boolean = { val scanner = new Scanner(in) val resp = scanner.nextLine() val resp0 = resp .filter(!_.isSpaceChar) .toLowerCase(locale) .distinct resp0 match { case "y" => true case "n" => false case "" => default case _ => out.print(s"Please answer Y or N. $choice ") loop() } } loop() } } @data class YesToAll( out: PrintStream = System.err ) extends Confirm { def confirm(message: String, default: Boolean): Task[Boolean] = Task.delay { out.println(message + " [Y/n] Y") true } } def default: Confirm = ConsoleInput() }
Example 110
Source File: Setup.scala From coursier with Apache License 2.0 | 5 votes |
package coursier.cli.setup import java.io.File import java.util.Locale import caseapp.core.app.CaseApp import caseapp.core.RemainingArgs import coursier.cli.Util.ValidatedExitOnError import coursier.env.{EnvironmentUpdate, ProfileUpdater, WindowsEnvVarUpdater} import coursier.install.{Channels, InstallDir} import coursier.jvm.JvmCache import coursier.launcher.internal.Windows import coursier.util.{Sync, Task} object Setup extends CaseApp[SetupOptions] { def run(options: SetupOptions, args: RemainingArgs): Unit = { val params = SetupParams(options).exitOnError() val pool = Sync.fixedThreadPool(params.cache.parallel) val logger = params.output.logger() val cache = params.cache.cache(pool, logger) val javaHome = params.sharedJava.javaHome(cache, params.output.verbosity) val envVarUpdaterOpt = if (params.env.env) None else Some(params.env.envVarUpdater) val graalvmHome = { version: String => javaHome.get(s"graalvm:$version") } val installCache = cache.withLogger(params.output.logger(byFileType = true)) val installDir = params.sharedInstall.installDir(installCache) .withVerbosity(params.output.verbosity) .withNativeImageJavaHome(Some(graalvmHome)) val channels = Channels(params.sharedChannel.channels, params.sharedInstall.repositories, installCache) .withVerbosity(params.output.verbosity) val confirm = if (params.yes) Confirm.YesToAll() else Confirm.ConsoleInput().withIndent(2) val tasks = Seq( MaybeInstallJvm( cache, envVarUpdaterOpt, javaHome, confirm, params.sharedJava.id ), MaybeSetupPath( installDir, envVarUpdaterOpt, EnvironmentUpdate.defaultGetEnv, File.pathSeparator, confirm ), MaybeInstallApps(installDir, channels, params.apps) ) val init = if (params.tryRevert) { val message = "Warning: the --try-revert option is experimental. Keep going only if you know what you are doing." confirm.confirm(message, default = false) } else Task.point(()) val task = tasks.foldLeft(init) { (acc, step) => val t = if (params.tryRevert) step.tryRevert else step.fullTask(System.err) acc.flatMap(_ => t) } if (params.banner && !params.tryRevert) // from https://github.com/scala/scala/blob/eb1ea8b367f9b240afc0b16184396fa3bbf7e37c/project/VersionUtil.scala#L34-L39 System.err.println( """ | ________ ___ / / ___ | / __/ __// _ | / / / _ | | __\ \/ /__/ __ |/ /__/ __ | | /____/\___/_/ |_/____/_/ | | | |/ |""".stripMargin ) // TODO Better error messages for relevant exceptions try task.unsafeRun()(cache.ec) catch { case e: InstallDir.InstallDirException if params.output.verbosity <= 1 => System.err.println(e.getMessage) sys.exit(1) case e: JvmCache.JvmCacheException if params.output.verbosity <= 1 => System.err.println(e.getMessage) sys.exit(1) } } }
Example 111
Source File: DeltaSourceUtils.scala From delta with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.delta.sources import java.util.Locale import org.apache.spark.sql.catalyst.analysis.UnresolvedAttribute import org.apache.spark.sql.catalyst.expressions import org.apache.spark.sql.catalyst.expressions.Expression import org.apache.spark.sql.sources import org.apache.spark.sql.sources.Filter object DeltaSourceUtils { val NAME = "delta" val ALT_NAME = "delta" // Batch relations don't pass partitioning columns to `CreatableRelationProvider`s, therefore // as a hack, we pass in the partitioning columns among the options. val PARTITIONING_COLUMNS_KEY = "__partition_columns" def isDeltaDataSourceName(name: String): Boolean = { name.toLowerCase(Locale.ROOT) == NAME || name.toLowerCase(Locale.ROOT) == ALT_NAME } def translateFilters(filters: Array[Filter]): Expression = filters.map { case sources.EqualTo(attribute, value) => expressions.EqualTo(UnresolvedAttribute(attribute), expressions.Literal.create(value)) case sources.EqualNullSafe(attribute, value) => expressions.EqualNullSafe(UnresolvedAttribute(attribute), expressions.Literal.create(value)) case sources.GreaterThan(attribute, value) => expressions.GreaterThan(UnresolvedAttribute(attribute), expressions.Literal.create(value)) case sources.GreaterThanOrEqual(attribute, value) => expressions.GreaterThanOrEqual( UnresolvedAttribute(attribute), expressions.Literal.create(value)) case sources.LessThan(attribute, value) => expressions.LessThanOrEqual(UnresolvedAttribute(attribute), expressions.Literal.create(value)) case sources.LessThanOrEqual(attribute, value) => expressions.LessThanOrEqual(UnresolvedAttribute(attribute), expressions.Literal.create(value)) case sources.In(attribute, values) => expressions.In(UnresolvedAttribute(attribute), values.map(createLiteral)) case sources.IsNull(attribute) => expressions.IsNull(UnresolvedAttribute(attribute)) case sources.IsNotNull(attribute) => expressions.IsNotNull(UnresolvedAttribute(attribute)) case sources.Not(otherFilter) => expressions.Not(translateFilters(Array(otherFilter))) case sources.And(filter1, filter2) => expressions.And(translateFilters(Array(filter1)), translateFilters(Array(filter2))) case sources.Or(filter1, filter2) => expressions.Or(translateFilters(Array(filter1)), translateFilters(Array(filter2))) case sources.StringStartsWith(attribute, value) => new expressions.Like( UnresolvedAttribute(attribute), expressions.Literal.create(s"${value}%")) case sources.StringEndsWith(attribute, value) => new expressions.Like( UnresolvedAttribute(attribute), expressions.Literal.create(s"%${value}")) case sources.StringContains(attribute, value) => new expressions.Like( UnresolvedAttribute(attribute), expressions.Literal.create(s"%${value}%")) case sources.AlwaysTrue() => expressions.Literal.TrueLiteral case sources.AlwaysFalse() => expressions.Literal.FalseLiteral }.reduce(expressions.And) }
Example 112
Source File: DateFormatter.scala From delta with Apache License 2.0 | 5 votes |
sealed trait DateFormatter extends Serializable { def parse(s: String): Int // returns days since epoch def format(days: Int): String } class Iso8601DateFormatter( pattern: String, locale: Locale) extends DateFormatter with DateTimeFormatterHelper { @transient private lazy val formatter = getOrCreateFormatter(pattern, locale) private val UTC = ZoneId.of("UTC") private def toInstant(s: String): Instant = { val temporalAccessor = formatter.parse(s) toInstantWithZoneId(temporalAccessor, UTC) } override def parse(s: String): Int = instantToDays(toInstant(s)) override def format(days: Int): String = { val instant = Instant.ofEpochSecond(days * DateTimeUtils.SECONDS_PER_DAY) formatter.withZone(UTC).format(instant) } } object DateFormatter { val defaultPattern: String = "yyyy-MM-dd" val defaultLocale: Locale = Locale.US def apply(format: String, locale: Locale): DateFormatter = { new Iso8601DateFormatter(format, locale) } def apply(format: String): DateFormatter = apply(format, defaultLocale) def apply(): DateFormatter = apply(defaultPattern) }
Example 113
Source File: DateFormatUtils.scala From hail with MIT License | 5 votes |
package is.hail.utils import java.time.DayOfWeek import java.util.Locale import java.time.format.{DateTimeFormatter, DateTimeFormatterBuilder, TextStyle} import java.time.temporal.{ChronoField, WeekFields} import java.time.chrono.{ChronoLocalDate, Chronology} object DateFormatUtils { def parseDateFormat(str: String, locale: Locale): DateTimeFormatter = { val fmt = new DateTimeFormatterBuilder val chrono = Chronology.ofLocale(locale) lazy val _1970 = chrono.date(1970, 1, 1) val SUNDAY_START_ALWAYS = WeekFields.of(DayOfWeek.SUNDAY, 7) val MONDAY_START_ALWAYS = WeekFields.of(DayOfWeek.MONDAY, 7) def char(c: Char): Unit = fmt.appendLiteral(c) def spec(c: Char): Unit = { c match { case '%' => char('%') case 'A' => fmt.appendText(ChronoField.DAY_OF_WEEK, TextStyle.FULL) case 'a' => fmt.appendText(ChronoField.DAY_OF_WEEK, TextStyle.SHORT) case 'B' => fmt.appendText(ChronoField.MONTH_OF_YEAR, TextStyle.FULL) case 'b' | 'h' => fmt.appendText(ChronoField.MONTH_OF_YEAR, TextStyle.SHORT) case 'D' => alternating("m/d/y") case 'd' => fmt.appendValue(ChronoField.DAY_OF_MONTH, 2) case 'e' => fmt.padNext(2); fmt.appendValue(ChronoField.DAY_OF_MONTH) case 'F' => alternating("Y-m-d") case 'H' => fmt.appendValue(ChronoField.HOUR_OF_DAY, 2) case 'I' => fmt.appendValue(ChronoField.CLOCK_HOUR_OF_AMPM, 2) case 'j' => fmt.appendValue(ChronoField.DAY_OF_YEAR, 3) case 'k' => fmt.padNext(2); fmt.appendValue(ChronoField.HOUR_OF_DAY) case 'l' => fmt.padNext(2); fmt.appendValue(ChronoField.CLOCK_HOUR_OF_AMPM) case 'M' => fmt.appendValue(ChronoField.MINUTE_OF_HOUR, 2) case 'm' => fmt.appendValue(ChronoField.MONTH_OF_YEAR, 2) case 'n' => char('\n') case 'p' => fmt.appendText(ChronoField.AMPM_OF_DAY, TextStyle.SHORT) case 'R' => alternating("H:M") case 'r' => alternating("I:M:S p") case 'S' => fmt.appendValue(ChronoField.SECOND_OF_MINUTE, 2) case 's' => fmt.appendValue(ChronoField.INSTANT_SECONDS) case 'T' => alternating("H:M:S") case 't' => char('\t') case 'U' => fmt.appendValue(SUNDAY_START_ALWAYS.weekOfYear(), 2) //Sunday first day case 'u' => fmt.appendValue(WeekFields.ISO.dayOfWeek()) // 1-7, starts on Monday case 'V' => fmt.appendValue(WeekFields.ISO.weekOfWeekBasedYear(), 2) case 'v' => alternating("e-b-Y") case 'W' => fmt.appendValue(MONDAY_START_ALWAYS.weekOfYear(), 2) // Monday first day case 'Y' => fmt.appendValue(ChronoField.YEAR, 4) case 'y' => fmt.appendValueReduced(ChronoField.YEAR, 2, 2, _1970) case 'Z' => fmt.appendZoneId() case 'z' => fmt.appendOffsetId() case 'E' | 'O' => char(c) // Python just keeps these two letters for whatever reason. case 'C' | 'c' | 'G' | 'g' | 'w'| 'X' | 'x' => throw new HailException(s"Currently unsupported time formatting character: $c") case d => fatal(s"invalid time format descriptor: $d") } } def alternating(s: String): Unit = { var isSpec = true for (c <- s) { if (isSpec) spec(c) else char(c) isSpec = !isSpec } } val chrs = str.iterator while (chrs.hasNext) chrs.next() match { case '%' => spec(if (chrs.hasNext) chrs.next() else '%') case c => char(c) } fmt.toFormatter } }
Example 114
Source File: Util.scala From CM-Well with Apache License 2.0 | 5 votes |
package cmwell.build import java.util.Locale import cmwell.build.OSType.OSType def getOperatingSystemType: OSType = { if (detectedOS == null) { val OS = System.getProperty("os.name", "generic").toLowerCase(Locale.ENGLISH) if (OS.contains("mac") || OS.contains("darwin")) detectedOS = OSType.MacOS else if (OS.contains("win")) detectedOS = OSType.Windows else if (OS.contains("nux")) detectedOS = OSType.Linux else detectedOS = OSType.Other } detectedOS } }
Example 115
Source File: PMMLModelExport.scala From multi-tenancy-spark with Apache License 2.0 | 5 votes |
package org.apache.spark.mllib.pmml.export import java.text.SimpleDateFormat import java.util.{Date, Locale} import scala.beans.BeanProperty import org.dmg.pmml.{Application, Header, PMML, Timestamp} private[mllib] trait PMMLModelExport { @BeanProperty val pmml: PMML = { val version = getClass.getPackage.getImplementationVersion val app = new Application("Apache Spark MLlib").setVersion(version) val timestamp = new Timestamp() .addContent(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.US).format(new Date())) val header = new Header() .setApplication(app) .setTimestamp(timestamp) new PMML("4.2", header, null) } }
Example 116
Source File: SQLMetrics.scala From multi-tenancy-spark with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution.metric import java.text.NumberFormat import java.util.Locale import org.apache.spark.SparkContext import org.apache.spark.scheduler.AccumulableInfo import org.apache.spark.util.{AccumulatorContext, AccumulatorV2, Utils} class SQLMetric(val metricType: String, initValue: Long = 0L) extends AccumulatorV2[Long, Long] { // This is a workaround for SPARK-11013. // We may use -1 as initial value of the accumulator, if the accumulator is valid, we will // update it at the end of task and the value will be at least 0. Then we can filter out the -1 // values before calculate max, min, etc. private[this] var _value = initValue private var _zeroValue = initValue override def copy(): SQLMetric = { val newAcc = new SQLMetric(metricType, _value) newAcc._zeroValue = initValue newAcc } override def reset(): Unit = _value = _zeroValue override def merge(other: AccumulatorV2[Long, Long]): Unit = other match { case o: SQLMetric => _value += o.value case _ => throw new UnsupportedOperationException( s"Cannot merge ${this.getClass.getName} with ${other.getClass.getName}") } override def isZero(): Boolean = _value == _zeroValue override def add(v: Long): Unit = _value += v def +=(v: Long): Unit = _value += v override def value: Long = _value // Provide special identifier as metadata so we can tell that this is a `SQLMetric` later override def toInfo(update: Option[Any], value: Option[Any]): AccumulableInfo = { new AccumulableInfo( id, name, update, value, true, true, Some(AccumulatorContext.SQL_ACCUM_IDENTIFIER)) } } object SQLMetrics { private val SUM_METRIC = "sum" private val SIZE_METRIC = "size" private val TIMING_METRIC = "timing" def createMetric(sc: SparkContext, name: String): SQLMetric = { val acc = new SQLMetric(SUM_METRIC) acc.register(sc, name = Some(name), countFailedValues = false) acc } def stringValue(metricsType: String, values: Seq[Long]): String = { if (metricsType == SUM_METRIC) { val numberFormat = NumberFormat.getIntegerInstance(Locale.US) numberFormat.format(values.sum) } else { val strFormat: Long => String = if (metricsType == SIZE_METRIC) { Utils.bytesToString } else if (metricsType == TIMING_METRIC) { Utils.msDurationToString } else { throw new IllegalStateException("unexpected metrics type: " + metricsType) } val validValues = values.filter(_ >= 0) val Seq(sum, min, med, max) = { val metric = if (validValues.isEmpty) { Seq.fill(4)(0L) } else { val sorted = validValues.sorted Seq(sorted.sum, sorted(0), sorted(validValues.length / 2), sorted(validValues.length - 1)) } metric.map(strFormat) } s"\n$sum ($min, $med, $max)" } } }
Example 117
Source File: JacksonMessageWriter.scala From multi-tenancy-spark with Apache License 2.0 | 5 votes |
package org.apache.spark.status.api.v1 import java.io.OutputStream import java.lang.annotation.Annotation import java.lang.reflect.Type import java.nio.charset.StandardCharsets import java.text.SimpleDateFormat import java.util.{Calendar, Locale, SimpleTimeZone} import javax.ws.rs.Produces import javax.ws.rs.core.{MediaType, MultivaluedMap} import javax.ws.rs.ext.{MessageBodyWriter, Provider} import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.databind.{ObjectMapper, SerializationFeature} @Provider @Produces(Array(MediaType.APPLICATION_JSON)) private[v1] class JacksonMessageWriter extends MessageBodyWriter[Object]{ val mapper = new ObjectMapper() { override def writeValueAsString(t: Any): String = { super.writeValueAsString(t) } } mapper.registerModule(com.fasterxml.jackson.module.scala.DefaultScalaModule) mapper.enable(SerializationFeature.INDENT_OUTPUT) mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL) mapper.setDateFormat(JacksonMessageWriter.makeISODateFormat) override def isWriteable( aClass: Class[_], `type`: Type, annotations: Array[Annotation], mediaType: MediaType): Boolean = { true } override def writeTo( t: Object, aClass: Class[_], `type`: Type, annotations: Array[Annotation], mediaType: MediaType, multivaluedMap: MultivaluedMap[String, AnyRef], outputStream: OutputStream): Unit = { t match { case ErrorWrapper(err) => outputStream.write(err.getBytes(StandardCharsets.UTF_8)) case _ => mapper.writeValue(outputStream, t) } } override def getSize( t: Object, aClass: Class[_], `type`: Type, annotations: Array[Annotation], mediaType: MediaType): Long = { -1L } } private[spark] object JacksonMessageWriter { def makeISODateFormat: SimpleDateFormat = { val iso8601 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'GMT'", Locale.US) val cal = Calendar.getInstance(new SimpleTimeZone(0, "GMT")) iso8601.setCalendar(cal) iso8601 } }
Example 118
Source File: SimpleDateParam.scala From multi-tenancy-spark with Apache License 2.0 | 5 votes |
package org.apache.spark.status.api.v1 import java.text.{ParseException, SimpleDateFormat} import java.util.{Locale, TimeZone} import javax.ws.rs.WebApplicationException import javax.ws.rs.core.Response import javax.ws.rs.core.Response.Status private[v1] class SimpleDateParam(val originalValue: String) { val timestamp: Long = { val format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSz", Locale.US) try { format.parse(originalValue).getTime() } catch { case _: ParseException => val gmtDay = new SimpleDateFormat("yyyy-MM-dd", Locale.US) gmtDay.setTimeZone(TimeZone.getTimeZone("GMT")) try { gmtDay.parse(originalValue).getTime() } catch { case _: ParseException => throw new WebApplicationException( Response .status(Status.BAD_REQUEST) .entity("Couldn't parse date: " + originalValue) .build() ) } } } }
Example 119
Source File: CsvSink.scala From multi-tenancy-spark with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.io.File import java.util.{Locale, Properties} import java.util.concurrent.TimeUnit import com.codahale.metrics.{CsvReporter, MetricRegistry} import org.apache.spark.SecurityManager import org.apache.spark.metrics.MetricsSystem private[spark] class CsvSink(val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val CSV_KEY_PERIOD = "period" val CSV_KEY_UNIT = "unit" val CSV_KEY_DIR = "directory" val CSV_DEFAULT_PERIOD = 10 val CSV_DEFAULT_UNIT = "SECONDS" val CSV_DEFAULT_DIR = "/tmp/" val pollPeriod = Option(property.getProperty(CSV_KEY_PERIOD)) match { case Some(s) => s.toInt case None => CSV_DEFAULT_PERIOD } val pollUnit: TimeUnit = Option(property.getProperty(CSV_KEY_UNIT)) match { case Some(s) => TimeUnit.valueOf(s.toUpperCase()) case None => TimeUnit.valueOf(CSV_DEFAULT_UNIT) } MetricsSystem.checkMinimalPollingPeriod(pollUnit, pollPeriod) val pollDir = Option(property.getProperty(CSV_KEY_DIR)) match { case Some(s) => s case None => CSV_DEFAULT_DIR } val reporter: CsvReporter = CsvReporter.forRegistry(registry) .formatFor(Locale.US) .convertDurationsTo(TimeUnit.MILLISECONDS) .convertRatesTo(TimeUnit.SECONDS) .build(new File(pollDir)) override def start() { reporter.start(pollPeriod, pollUnit) } override def stop() { reporter.stop() } override def report() { reporter.report() } }
Example 120
Source File: CsvSink.scala From iolap with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.io.File import java.util.{Locale, Properties} import java.util.concurrent.TimeUnit import com.codahale.metrics.{CsvReporter, MetricRegistry} import org.apache.spark.SecurityManager import org.apache.spark.metrics.MetricsSystem private[spark] class CsvSink(val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val CSV_KEY_PERIOD = "period" val CSV_KEY_UNIT = "unit" val CSV_KEY_DIR = "directory" val CSV_DEFAULT_PERIOD = 10 val CSV_DEFAULT_UNIT = "SECONDS" val CSV_DEFAULT_DIR = "/tmp/" val pollPeriod = Option(property.getProperty(CSV_KEY_PERIOD)) match { case Some(s) => s.toInt case None => CSV_DEFAULT_PERIOD } val pollUnit: TimeUnit = Option(property.getProperty(CSV_KEY_UNIT)) match { case Some(s) => TimeUnit.valueOf(s.toUpperCase()) case None => TimeUnit.valueOf(CSV_DEFAULT_UNIT) } MetricsSystem.checkMinimalPollingPeriod(pollUnit, pollPeriod) val pollDir = Option(property.getProperty(CSV_KEY_DIR)) match { case Some(s) => s case None => CSV_DEFAULT_DIR } val reporter: CsvReporter = CsvReporter.forRegistry(registry) .formatFor(Locale.US) .convertDurationsTo(TimeUnit.MILLISECONDS) .convertRatesTo(TimeUnit.SECONDS) .build(new File(pollDir)) override def start() { reporter.start(pollPeriod, pollUnit) } override def stop() { reporter.stop() } override def report() { reporter.report() } }
Example 121
Source File: Content.scala From guardrail with MIT License | 5 votes |
package com.twilio.guardrail.protocol.terms import cats.Order import cats.implicits._ import java.util.Locale sealed abstract class ContentType(val value: String) { override val toString: String = value } sealed class TextContent(value: String) extends ContentType(value) sealed class BinaryContent(value: String) extends ContentType(value) object TextContent { def unapply(contentType: ContentType): Option[String] = contentType match { case tc: TextContent => Some(tc.value) case _ => None } } object BinaryContent { def unapply(contentType: ContentType): Option[String] = contentType match { case bc: BinaryContent => Some(bc.value) case _ => None } } case object ApplicationJson extends TextContent("application/json") case object MultipartFormData extends TextContent("multipart/form-data") case object UrlencodedFormData extends TextContent("application/x-www-form-urlencoded") case object TextPlain extends TextContent("text/plain") case object OctetStream extends BinaryContent("application/octet-stream") object ContentType { // This is not intended to be exhaustive, but should hopefully cover cases we're likely to see. // See https://www.iana.org/assignments/media-types/media-types.xhtml for all IANA registered types. // Note that types that end in "+json" or "+xml" are handled explicitly in the match statement. private val APPLICATION_TEXT_TYPES = Set( "application/jose", "application/jwt", "application/mbox", "application/node", "application/sdp", "application/sgml", "application/sql", "application/x-pem-file", "application/xml", "application/xml-dtd", "application/xml-external-parsed-entity" ) private def isApplicationText(name: String) = name.startsWith("application/") && (name.endsWith("+json") || name.endsWith("+xml") || APPLICATION_TEXT_TYPES.contains(name)) private def isTextRegistry(name: String) = name.startsWith("text/") private def isUnsupported(name: String) = name == "application/xml" || // We explicitly avoid support for XML for now to avoid breaking existing specs (name.startsWith("multipart/") && name != "multipart/form-data") || name.startsWith("example/") def unapply(value: String): Option[ContentType] = value.toLowerCase(Locale.US) match { case "application/json" => Some(ApplicationJson) case "multipart/form-data" => Some(MultipartFormData) case "application/x-www-form-urlencoded" => Some(UrlencodedFormData) case "text/plain" => Some(TextPlain) case "application/octet-stream" => Some(OctetStream) case x if isUnsupported(x) => None case x if isTextRegistry(x) | isApplicationText(x) => Some(new TextContent(value)) case _ => Some(new BinaryContent(value)) } implicit val ContentTypeOrder: Order[ContentType] = Order[String].contramap[ContentType](_.value) }
Example 122
Source File: package.scala From guardrail with MIT License | 5 votes |
package com.twilio.guardrail.generators import cats.data.NonEmptyList import java.util.Locale import java.util.regex.Matcher.quoteReplacement import io.swagger.v3.oas.models.{ Operation, PathItem } import io.swagger.v3.oas.models.media.Schema import io.swagger.v3.oas.models.parameters.Parameter import scala.collection.IterableLike import scala.collection.generic.CanBuildFrom import scala.language.implicitConversions package syntax { class RichNotNullShower[A](value: A) { def showNotNull: String = showNotNullIndented(0) def showNotNullIndented(indent: Int): String = (" " * indent) + value.toString().linesIterator.filterNot(_.contains(": null")).mkString("\n" + (" " * indent)) } class RichCollection[A, Repr](xs: IterableLike[A, Repr]) { def distinctBy[B, That](f: A => B)(implicit cbf: CanBuildFrom[Repr, A, That]): That = { val builder = cbf(xs.repr) val i = xs.iterator var set = Set[B]() while (i.hasNext) { val o = i.next val b = f(o) if (!set(b)) { set += b builder += o } } builder.result } } } package object syntax { val GENERATED_CODE_COMMENT_LINES: List[String] = List( "This file was generated by Guardrail (https://github.com/twilio/guardrail).", "Modifications will be overwritten; instead edit the OpenAPI/Swagger spec file." ) private val SPLIT_DELIMITERS = "[-_\\s\\.]+".r private val BOUNDARY_SPLITTERS = List( "([^A-Z])([A-Z])".r, "([A-Z]+)([A-Z][a-z]+)".r ) implicit class RichString(private val s: String) extends AnyVal { private def splitParts(s: String): List[String] = BOUNDARY_SPLITTERS .foldLeft(SPLIT_DELIMITERS.split(s))( (last, splitter) => last.flatMap(part => splitter.replaceAllIn(part, m => quoteReplacement(m.group(1) + "-" + m.group(2))).split("-")) ) .map(_.toLowerCase(Locale.US)) .toList def toPascalCase: String = splitParts(s).map(_.capitalize).mkString def toCamelCase: String = NonEmptyList .fromList(splitParts(s)) .fold("")( parts => parts.head + parts.tail.map(_.capitalize).mkString ) def toSnakeCase: String = splitParts(s).mkString("_") def toDashedCase: String = splitParts(s).mkString("-") def uncapitalized: String = if (s.nonEmpty) { val inUnPacked = s.toCharArray val lowercaseFirstCharacter = Character.toLowerCase(inUnPacked(0)) new String(lowercaseFirstCharacter +: inUnPacked.tail) } else s } implicit def RichSchema: Schema[_] => RichNotNullShower[Schema[_]] = new RichNotNullShower[Schema[_]](_) implicit def RichOperation: Operation => RichNotNullShower[Operation] = new RichNotNullShower[Operation](_) implicit def RichPathItem: PathItem => RichNotNullShower[PathItem] = new RichNotNullShower[PathItem](_) implicit def RichParameter: Parameter => RichNotNullShower[Parameter] = new RichNotNullShower[Parameter](_) implicit def toRichCollection[A, Repr](xs: IterableLike[A, Repr]): RichCollection[A, Repr] = new RichCollection(xs) }
Example 123
Source File: DQMainClass.scala From DataQuality with GNU Lesser General Public License v3.0 | 5 votes |
package it.agilelab.bigdata.DataQuality.utils import java.util.Locale import it.agilelab.bigdata.DataQuality.utils.io.HistoryDBManager import org.apache.hadoop.fs.{FileSystem, Path} import org.apache.log4j.{Level, Logger} import org.apache.spark.SparkContext import org.apache.spark.sql.SQLContext import org.apache.spark.sql.hive.HiveContext trait DQMainClass { this: DQSparkContext with Logging => private def initLogger(): Unit = { Logger.getLogger("org").setLevel(Level.WARN) Logger.getLogger("org.apache.spark.scheduler.TaskSetManager").setLevel(Level.WARN) Logger.getLogger("akka").setLevel(Level.OFF) Logger.getLogger("io.netty").setLevel(Level.OFF) Logger.getLogger("org.spark-project.jetty").setLevel(Level.OFF) Logger.getLogger("org.apache.hadoop.hdfs.KeyProviderCache").setLevel(Level.OFF) } private def makeFileSystem(settings: DQSettings, sc: SparkContext): FileSystem = { if (sc.isLocal) FileSystem.getLocal(sc.hadoopConfiguration) else { if (settings.s3Bucket.isDefined) { sc.hadoopConfiguration.set("fs.defaultFS", settings.s3Bucket.get) sc.hadoopConfiguration.set("fs.AbstractFileSystem.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem") } FileSystem.get( sc.hadoopConfiguration) } } protected def body()(implicit fs: FileSystem, sparkContext: SparkContext, sqlContext: SQLContext, sqlWriter: HistoryDBManager, settings: DQSettings): Boolean def preMessage(task: String): Unit = { log.warn("************************************************************************") log.warn(s" Starting execution of task $task") log.warn("************************************************************************") } def postMessage(task: String): Unit = { log.warn("************************************************************************") log.warn(s" Finishing execution of task $task") log.warn("************************************************************************") } def main(args: Array[String]): Unit = { // set to avoid casting problems in metric result name generation Locale.setDefault(Locale.ENGLISH) initLogger() DQCommandLineOptions.parser().parse(args, DQCommandLineOptions("","")) match { case Some(commandLineOptions) => // Load our own config values from the default location, application.conf val settings = new DQSettings(commandLineOptions) val sparkContext = makeSparkContext(settings) val fs = makeFileSystem(settings, sparkContext) settings.logThis()(log) val sqlContext: SQLContext = if (settings.hiveDir.isDefined) { val hc = new HiveContext(sparkContext) hc.setConf("hive.metastore.warehouse.dir", settings.hiveDir.get) hc } else makeSqlContext(sparkContext) val historyDatabase = new HistoryDBManager(settings) // Starting application body preMessage(s"{${settings.appName}}") val startTime = System.currentTimeMillis() body()(fs, sparkContext, sqlContext, historyDatabase, settings) postMessage(s"{${settings.appName}}") log.info(s"Execution finished in [${(System.currentTimeMillis() - startTime) / 60000}] min(s)") log.info("Closing application...") historyDatabase.closeConnection() sparkContext.stop() log.info("Spark context were terminated. Exiting...") case None => log.error("Wrong parameters provided") throw new Exception("Wrong parameters provided") } } }
Example 124
Source File: SaslQOP.scala From kyuubi with Apache License 2.0 | 5 votes |
package yaooqinn.kyuubi.auth import java.util.Locale trait SaslQOP { override def toString: String = "auth, auth-int, auth-conf" } case object AUTH_CONF extends SaslQOP { override val toString: String = "auth-conf" } def fromString(str: String): SaslQOP = str.toLowerCase(Locale.ROOT) match { case AUTH.toString => AUTH case AUTH_INT.toString => AUTH_INT case AUTH_CONF.toString => AUTH_CONF case _ => throw new IllegalArgumentException( s"Unknown auth type: $str, only ${SaslQOP.toString} allowed.") } }
Example 125
Source File: Utils.scala From OUTDATED_ledger-wallet-android with MIT License | 5 votes |
package co.ledger.wallet.nfc import java.util.Arrays import java.util.Locale object Utils { private val hexArray = "0123456789ABCDEF".toCharArray() private val AID_PREFIX = "A00000061700" private val AID_SUFFIX = "0101" private val SELECT_HEADER = "00A40400" def encodeHex(bytes: Array[Byte]): String = { val hexChars = Array.ofDim[Char](bytes.length * 2) for (i <- 0 until bytes.length) { val v = bytes(i) & 0xFF hexChars(i * 2) = hexArray(v >>> 4) hexChars(i * 2 + 1) = hexArray(v & 0x0F) } new String(hexChars) } def decodeHex(hexString: String): Array[Byte] = { if ((hexString.length & 0x01) != 0) { throw new IllegalArgumentException("Odd number of characters.") } val hexChars = hexString.toUpperCase(Locale.ROOT).toCharArray() val result = Array.ofDim[Byte](hexChars.length / 2) var i = 0 while (i < hexChars.length) { result(i / 2) = (Arrays.binarySearch(hexArray, hexChars(i)) * 16 + Arrays.binarySearch(hexArray, hexChars(i + 1))).toByte i += 2 } result } def stringToHex(s: String): Int ={ Integer.decode(s) } def bytesToHex(bytes: Array[Byte]): String = { val hexChars = Array.ofDim[Char](bytes.length * 2) for (j <- 0 until bytes.length) { val v = bytes(j) & 0xFF hexChars(j * 2) = hexArray(v >>> 4) hexChars(j * 2 + 1) = hexArray(v & 0x0F) } new String(hexChars) } def statusBytes(response: Array[Byte]): Array[Byte] = { Array(response(response.length - 2), response(response.length - 1)) } def responseData(response: Array[Byte]): Array[Byte] = { Arrays.copyOfRange(response, 0, response.length - 2) } }
Example 126
Source File: IncomingTransactionDialogFragment.scala From OUTDATED_ledger-wallet-android with MIT License | 5 votes |
package co.ledger.wallet.app.ui.m2fa import java.text.SimpleDateFormat import java.util.Locale import android.content.DialogInterface import android.os.Bundle import android.view.{View, ViewGroup, LayoutInflater} import co.ledger.wallet.R import co.ledger.wallet.app.base.BaseDialogFragment import co.ledger.wallet.core.bitcoin.AmountFormatter import co.ledger.wallet.app.api.m2fa.IncomingTransactionAPI import co.ledger.wallet.core.utils.TR import co.ledger.wallet.core.view.DialogActionBarController import co.ledger.wallet.core.widget.TextView class IncomingTransactionDialogFragment extends BaseDialogFragment { lazy val actions = DialogActionBarController(R.id.dialog_action_bar).noNeutralButton lazy val amount = TR(R.id.amount).as[TextView] lazy val address = TR(R.id.address).as[TextView] lazy val date = TR(R.id.date).as[TextView] lazy val name = TR(R.id.dongle_name).as[TextView] private[this] var _transaction: Option[IncomingTransactionAPI#IncomingTransaction] = None def this(tx: IncomingTransactionAPI#IncomingTransaction) { this() _transaction = Option(tx) setCancelable(false) } override def onCreateView(inflater: LayoutInflater, container: ViewGroup, savedInstanceState: Bundle): View = { inflater.inflate(R.layout.incoming_transaction_dialog_fragment, container, false) } override def onResume(): Unit = { super.onResume() if (_transaction.isEmpty || _transaction.get.isDone) dismiss() _transaction.foreach(_.onCancelled(dismiss)) } override def onPause(): Unit = { super.onPause() _transaction.foreach(_.onCancelled(null)) dismissAllowingStateLoss() } override def onViewCreated(view: View, savedInstanceState: Bundle): Unit = { super.onViewCreated(view, savedInstanceState) actions onPositiveClick { _transaction.foreach(_.accept()) _transaction = None dismiss() } actions onNegativeClick { _transaction.foreach(_.reject()) _transaction = None dismiss() } _transaction match { case Some(transaction) => amount.setText(AmountFormatter.Bitcoin.format(transaction.amount)) address.setText(transaction.address) name.setText(transaction.dongle.name.get) val df = android.text.format.DateFormat.getDateFormat(getActivity) val hf = android.text.format.DateFormat.getTimeFormat(getActivity) date.setText(TR(R.string.incoming_tx_date).as[String].format(df.format(transaction.date), hf.format(transaction.date))) case _ => } } override def onDismiss(dialog: DialogInterface): Unit = { super.onDismiss(dialog) _transaction.foreach(_.cancel()) } } object IncomingTransactionDialogFragment { val DefaultTag = "IncomingTransactionDialogFragment" }
Example 127
Source File: HexUtils.scala From OUTDATED_ledger-wallet-android with MIT License | 5 votes |
package co.ledger.wallet.core.utils import java.util.{Arrays, Locale} trait HexUtils { private val hexArray = "0123456789ABCDEF".toCharArray private val AID_PREFIX = "A00000061700" private val AID_SUFFIX = "0101" private val SELECT_HEADER = "00A40400" def encodeHex(bytes: Array[Byte]): String = { val hexChars = Array.ofDim[Char](bytes.length * 2) for (i <- 0 until bytes.length) { val v = bytes(i) & 0xFF hexChars(i * 2) = hexArray(v >>> 4) hexChars(i * 2 + 1) = hexArray(v & 0x0F) } new String(hexChars) } def decodeHex(hexString: String): Array[Byte] = { if ((hexString.length & 0x01) != 0) { throw new IllegalArgumentException("Odd number of characters.") } val hexChars = hexString.toUpperCase(Locale.ROOT).toCharArray() val result = Array.ofDim[Byte](hexChars.length / 2) var i = 0 while (i < hexChars.length) { result(i / 2) = (Arrays.binarySearch(hexArray, hexChars(i)) * 16 + Arrays.binarySearch(hexArray, hexChars(i + 1))).toByte i += 2 } result } def stringToHex(s: String): Int ={ Integer.decode(s) } def bytesToHex(bytes: Array[Byte]): String = { val hexChars = Array.ofDim[Char](bytes.length * 2) for (j <- 0 until bytes.length) { val v = bytes(j) & 0xFF hexChars(j * 2) = hexArray(v >>> 4) hexChars(j * 2 + 1) = hexArray(v & 0x0F) } new String(hexChars) } implicit class HexString(val str: String) { def decodeHex(): Array[Byte] = HexUtils.decodeHex(str) } } object HexUtils extends HexUtils
Example 128
Source File: CsvSink.scala From spark1.52 with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.io.File import java.util.{Locale, Properties} import java.util.concurrent.TimeUnit import com.codahale.metrics.{CsvReporter, MetricRegistry} import org.apache.spark.SecurityManager import org.apache.spark.metrics.MetricsSystem private[spark] class CsvSink(val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val CSV_KEY_PERIOD = "period" val CSV_KEY_UNIT = "unit" val CSV_KEY_DIR = "directory" val CSV_DEFAULT_PERIOD = 10 val CSV_DEFAULT_UNIT = "SECONDS" val CSV_DEFAULT_DIR = "/tmp/" val pollPeriod = Option(property.getProperty(CSV_KEY_PERIOD)) match { case Some(s) => s.toInt case None => CSV_DEFAULT_PERIOD } val pollUnit: TimeUnit = Option(property.getProperty(CSV_KEY_UNIT)) match { case Some(s) => TimeUnit.valueOf(s.toUpperCase()) case None => TimeUnit.valueOf(CSV_DEFAULT_UNIT) } MetricsSystem.checkMinimalPollingPeriod(pollUnit, pollPeriod) val pollDir = Option(property.getProperty(CSV_KEY_DIR)) match { case Some(s) => s case None => CSV_DEFAULT_DIR } val reporter: CsvReporter = CsvReporter.forRegistry(registry) .formatFor(Locale.US) .convertDurationsTo(TimeUnit.MILLISECONDS) .convertRatesTo(TimeUnit.SECONDS) .build(new File(pollDir)) override def start() { reporter.start(pollPeriod, pollUnit) } override def stop() { reporter.stop() } override def report() { reporter.report() } }
Example 129
Source File: PMMLModelExport.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.mllib.pmml.export import java.text.SimpleDateFormat import java.util.{Date, Locale} import scala.beans.BeanProperty import org.dmg.pmml.{Application, Header, PMML, Timestamp} private[mllib] trait PMMLModelExport { @BeanProperty val pmml: PMML = { val version = getClass.getPackage.getImplementationVersion val app = new Application("Apache Spark MLlib").setVersion(version) val timestamp = new Timestamp() .addContent(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.US).format(new Date())) val header = new Header() .setApplication(app) .setTimestamp(timestamp) new PMML("4.2", header, null) } }
Example 130
Source File: joinTypes.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.plans import java.util.Locale import org.apache.spark.sql.catalyst.expressions.Attribute object JoinType { def apply(typ: String): JoinType = typ.toLowerCase(Locale.ROOT).replace("_", "") match { case "inner" => Inner case "outer" | "full" | "fullouter" => FullOuter case "leftouter" | "left" => LeftOuter case "rightouter" | "right" => RightOuter case "leftsemi" => LeftSemi case "leftanti" => LeftAnti case "cross" => Cross case _ => val supported = Seq( "inner", "outer", "full", "fullouter", "full_outer", "leftouter", "left", "left_outer", "rightouter", "right", "right_outer", "leftsemi", "left_semi", "leftanti", "left_anti", "cross") throw new IllegalArgumentException(s"Unsupported join type '$typ'. " + "Supported join types include: " + supported.mkString("'", "', '", "'") + ".") } } sealed abstract class JoinType { def sql: String } sealed abstract class InnerLike extends JoinType { def explicitCartesian: Boolean } case object Inner extends InnerLike { override def explicitCartesian: Boolean = false override def sql: String = "INNER" } case object Cross extends InnerLike { override def explicitCartesian: Boolean = true override def sql: String = "CROSS" } case object LeftOuter extends JoinType { override def sql: String = "LEFT OUTER" } case object RightOuter extends JoinType { override def sql: String = "RIGHT OUTER" } case object FullOuter extends JoinType { override def sql: String = "FULL OUTER" } case object LeftSemi extends JoinType { override def sql: String = "LEFT SEMI" } case object LeftAnti extends JoinType { override def sql: String = "LEFT ANTI" } case class ExistenceJoin(exists: Attribute) extends JoinType { override def sql: String = { // This join type is only used in the end of optimizer and physical plans, we will not // generate SQL for this join type throw new UnsupportedOperationException } } case class NaturalJoin(tpe: JoinType) extends JoinType { require(Seq(Inner, LeftOuter, RightOuter, FullOuter).contains(tpe), "Unsupported natural join type " + tpe) override def sql: String = "NATURAL " + tpe.sql } case class UsingJoin(tpe: JoinType, usingColumns: Seq[String]) extends JoinType { require(Seq(Inner, LeftOuter, LeftSemi, RightOuter, FullOuter, LeftAnti).contains(tpe), "Unsupported using join type " + tpe) override def sql: String = "USING " + tpe.sql } object LeftExistence { def unapply(joinType: JoinType): Option[JoinType] = joinType match { case LeftSemi | LeftAnti => Some(joinType) case j: ExistenceJoin => Some(joinType) case _ => None } }
Example 131
Source File: JSONOptions.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.json import java.util.{Locale, TimeZone} import com.fasterxml.jackson.core.{JsonFactory, JsonParser} import org.apache.commons.lang3.time.FastDateFormat import org.apache.spark.internal.Logging import org.apache.spark.sql.catalyst.util._ def setJacksonOptions(factory: JsonFactory): Unit = { factory.configure(JsonParser.Feature.ALLOW_COMMENTS, allowComments) factory.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, allowUnquotedFieldNames) factory.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, allowSingleQuotes) factory.configure(JsonParser.Feature.ALLOW_NUMERIC_LEADING_ZEROS, allowNumericLeadingZeros) factory.configure(JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS, allowNonNumericNumbers) factory.configure(JsonParser.Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER, allowBackslashEscapingAnyCharacter) factory.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, allowUnquotedControlChars) } }
Example 132
Source File: CompressionCodecs.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.util import java.util.Locale import org.apache.hadoop.conf.Configuration import org.apache.hadoop.io.SequenceFile.CompressionType import org.apache.hadoop.io.compress._ import org.apache.spark.util.Utils object CompressionCodecs { private val shortCompressionCodecNames = Map( "none" -> null, "uncompressed" -> null, "bzip2" -> classOf[BZip2Codec].getName, "deflate" -> classOf[DeflateCodec].getName, "gzip" -> classOf[GzipCodec].getName, "lz4" -> classOf[Lz4Codec].getName, "snappy" -> classOf[SnappyCodec].getName) def setCodecConfiguration(conf: Configuration, codec: String): Unit = { if (codec != null) { conf.set("mapreduce.output.fileoutputformat.compress", "true") conf.set("mapreduce.output.fileoutputformat.compress.type", CompressionType.BLOCK.toString) conf.set("mapreduce.output.fileoutputformat.compress.codec", codec) conf.set("mapreduce.map.output.compress", "true") conf.set("mapreduce.map.output.compress.codec", codec) } else { // This infers the option `compression` is set to `uncompressed` or `none`. conf.set("mapreduce.output.fileoutputformat.compress", "false") conf.set("mapreduce.map.output.compress", "false") } } }
Example 133
Source File: ParseMode.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.util import java.util.Locale import org.apache.spark.internal.Logging sealed trait ParseMode { def fromString(mode: String): ParseMode = mode.toUpperCase(Locale.ROOT) match { case PermissiveMode.name => PermissiveMode case DropMalformedMode.name => DropMalformedMode case FailFastMode.name => FailFastMode case _ => logWarning(s"$mode is not a valid parse mode. Using ${PermissiveMode.name}.") PermissiveMode } }
Example 134
Source File: InternalOutputModes.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.streaming import java.util.Locale import org.apache.spark.sql.streaming.OutputMode case object Update extends OutputMode def apply(outputMode: String): OutputMode = { outputMode.toLowerCase(Locale.ROOT) match { case "append" => OutputMode.Append case "complete" => OutputMode.Complete case "update" => OutputMode.Update case _ => throw new IllegalArgumentException(s"Unknown output mode $outputMode. " + "Accepted output modes are 'append', 'complete', 'update'") } } }
Example 135
Source File: ScalaUDFSuite.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.expressions import java.util.Locale import org.apache.spark.{SparkException, SparkFunSuite} import org.apache.spark.sql.catalyst.expressions.codegen.CodegenContext import org.apache.spark.sql.types.{IntegerType, StringType} class ScalaUDFSuite extends SparkFunSuite with ExpressionEvalHelper { test("basic") { val intUdf = ScalaUDF((i: Int) => i + 1, IntegerType, Literal(1) :: Nil) checkEvaluation(intUdf, 2) val stringUdf = ScalaUDF((s: String) => s + "x", StringType, Literal("a") :: Nil) checkEvaluation(stringUdf, "ax") } test("better error message for NPE") { val udf = ScalaUDF( (s: String) => s.toLowerCase(Locale.ROOT), StringType, Literal.create(null, StringType) :: Nil) val e1 = intercept[SparkException](udf.eval()) assert(e1.getMessage.contains("Failed to execute user defined function")) val e2 = intercept[SparkException] { checkEvalutionWithUnsafeProjection(udf, null) } assert(e2.getMessage.contains("Failed to execute user defined function")) } test("SPARK-22695: ScalaUDF should not use global variables") { val ctx = new CodegenContext ScalaUDF((s: String) => s + "x", StringType, Literal("a") :: Nil).genCode(ctx) assert(ctx.inlinedMutableStates.isEmpty) } }
Example 136
Source File: AnalysisTest.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.analysis import java.net.URI import java.util.Locale import org.apache.spark.sql.AnalysisException import org.apache.spark.sql.catalyst.catalog.{CatalogDatabase, InMemoryCatalog, SessionCatalog} import org.apache.spark.sql.catalyst.plans.PlanTest import org.apache.spark.sql.catalyst.plans.logical._ import org.apache.spark.sql.internal.SQLConf trait AnalysisTest extends PlanTest { protected val caseSensitiveAnalyzer = makeAnalyzer(caseSensitive = true) protected val caseInsensitiveAnalyzer = makeAnalyzer(caseSensitive = false) private def makeAnalyzer(caseSensitive: Boolean): Analyzer = { val conf = new SQLConf().copy(SQLConf.CASE_SENSITIVE -> caseSensitive) val catalog = new SessionCatalog(new InMemoryCatalog, FunctionRegistry.builtin, conf) catalog.createDatabase( CatalogDatabase("default", "", new URI("loc"), Map.empty), ignoreIfExists = false) catalog.createTempView("TaBlE", TestRelations.testRelation, overrideIfExists = true) catalog.createTempView("TaBlE2", TestRelations.testRelation2, overrideIfExists = true) catalog.createTempView("TaBlE3", TestRelations.testRelation3, overrideIfExists = true) new Analyzer(catalog, conf) { override val extendedResolutionRules = EliminateSubqueryAliases :: Nil } } protected def getAnalyzer(caseSensitive: Boolean) = { if (caseSensitive) caseSensitiveAnalyzer else caseInsensitiveAnalyzer } protected def checkAnalysis( inputPlan: LogicalPlan, expectedPlan: LogicalPlan, caseSensitive: Boolean = true): Unit = { val analyzer = getAnalyzer(caseSensitive) val actualPlan = analyzer.executeAndCheck(inputPlan) comparePlans(actualPlan, expectedPlan) } protected override def comparePlans( plan1: LogicalPlan, plan2: LogicalPlan, checkAnalysis: Boolean = false): Unit = { // Analysis tests may have not been fully resolved, so skip checkAnalysis. super.comparePlans(plan1, plan2, checkAnalysis) } protected def assertAnalysisSuccess( inputPlan: LogicalPlan, caseSensitive: Boolean = true): Unit = { val analyzer = getAnalyzer(caseSensitive) val analysisAttempt = analyzer.execute(inputPlan) try analyzer.checkAnalysis(analysisAttempt) catch { case a: AnalysisException => fail( s""" |Failed to Analyze Plan |$inputPlan | |Partial Analysis |$analysisAttempt """.stripMargin, a) } } protected def assertAnalysisError( inputPlan: LogicalPlan, expectedErrors: Seq[String], caseSensitive: Boolean = true): Unit = { val analyzer = getAnalyzer(caseSensitive) val e = intercept[AnalysisException] { analyzer.checkAnalysis(analyzer.execute(inputPlan)) } if (!expectedErrors.map(_.toLowerCase(Locale.ROOT)).forall( e.getMessage.toLowerCase(Locale.ROOT).contains)) { fail( s"""Exception message should contain the following substrings: | | ${expectedErrors.mkString("\n ")} | |Actual exception message: | | ${e.getMessage} """.stripMargin) } } }
Example 137
Source File: InternalOutputModesSuite.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.streaming import java.util.Locale import org.apache.spark.SparkFunSuite import org.apache.spark.sql.streaming.OutputMode class InternalOutputModesSuite extends SparkFunSuite { test("supported strings") { def testMode(outputMode: String, expected: OutputMode): Unit = { assert(InternalOutputModes(outputMode) === expected) } testMode("append", OutputMode.Append) testMode("Append", OutputMode.Append) testMode("complete", OutputMode.Complete) testMode("Complete", OutputMode.Complete) testMode("update", OutputMode.Update) testMode("Update", OutputMode.Update) } test("unsupported strings") { def testMode(outputMode: String): Unit = { val acceptedModes = Seq("append", "update", "complete") val e = intercept[IllegalArgumentException](InternalOutputModes(outputMode)) (Seq("output mode", "unknown", outputMode) ++ acceptedModes).foreach { s => assert(e.getMessage.toLowerCase(Locale.ROOT).contains(s.toLowerCase(Locale.ROOT))) } } testMode("Xyz") } }
Example 138
Source File: OrcOptions.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution.datasources.orc import java.util.Locale import org.apache.orc.OrcConf.COMPRESS import org.apache.spark.sql.catalyst.util.CaseInsensitiveMap import org.apache.spark.sql.internal.SQLConf val compressionCodec: String = { // `compression`, `orc.compress`(i.e., OrcConf.COMPRESS), and `spark.sql.orc.compression.codec` // are in order of precedence from highest to lowest. val orcCompressionConf = parameters.get(COMPRESS.getAttribute) val codecName = parameters .get("compression") .orElse(orcCompressionConf) .getOrElse(sqlConf.orcCompressionCodec) .toLowerCase(Locale.ROOT) if (!shortOrcCompressionCodecNames.contains(codecName)) { val availableCodecs = shortOrcCompressionCodecNames.keys.map(_.toLowerCase(Locale.ROOT)) throw new IllegalArgumentException(s"Codec [$codecName] " + s"is not available. Available codecs are ${availableCodecs.mkString(", ")}.") } shortOrcCompressionCodecNames(codecName) } } object OrcOptions { // The ORC compression short names private val shortOrcCompressionCodecNames = Map( "none" -> "NONE", "uncompressed" -> "NONE", "snappy" -> "SNAPPY", "zlib" -> "ZLIB", "lzo" -> "LZO") def getORCCompressionCodecName(name: String): String = shortOrcCompressionCodecNames(name) }
Example 139
Source File: ddl.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution.datasources import java.util.Locale import org.apache.spark.sql._ import org.apache.spark.sql.catalyst.TableIdentifier import org.apache.spark.sql.catalyst.catalog.{CatalogTable, CatalogUtils} import org.apache.spark.sql.catalyst.expressions.Attribute import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan import org.apache.spark.sql.execution.command.{DDLUtils, RunnableCommand} import org.apache.spark.sql.types._ case class CreateTempViewUsing( tableIdent: TableIdentifier, userSpecifiedSchema: Option[StructType], replace: Boolean, global: Boolean, provider: String, options: Map[String, String]) extends RunnableCommand { if (tableIdent.database.isDefined) { throw new AnalysisException( s"Temporary view '$tableIdent' should not have specified a database") } override def argString: String = { s"[tableIdent:$tableIdent " + userSpecifiedSchema.map(_ + " ").getOrElse("") + s"replace:$replace " + s"provider:$provider " + CatalogUtils.maskCredentials(options) } override def run(sparkSession: SparkSession): Seq[Row] = { if (provider.toLowerCase(Locale.ROOT) == DDLUtils.HIVE_PROVIDER) { throw new AnalysisException("Hive data source can only be used with tables, " + "you can't use it with CREATE TEMP VIEW USING") } val dataSource = DataSource( sparkSession, userSpecifiedSchema = userSpecifiedSchema, className = provider, options = options) val catalog = sparkSession.sessionState.catalog val viewDefinition = Dataset.ofRows( sparkSession, LogicalRelation(dataSource.resolveRelation())).logicalPlan if (global) { catalog.createGlobalTempView(tableIdent.table, viewDefinition, replace) } else { catalog.createTempView(tableIdent.table, viewDefinition, replace) } Seq.empty[Row] } } case class RefreshTable(tableIdent: TableIdentifier) extends RunnableCommand { override def run(sparkSession: SparkSession): Seq[Row] = { // Refresh the given table's metadata. If this table is cached as an InMemoryRelation, // drop the original cached version and make the new version cached lazily. sparkSession.catalog.refreshTable(tableIdent.quotedString) Seq.empty[Row] } } case class RefreshResource(path: String) extends RunnableCommand { override def run(sparkSession: SparkSession): Seq[Row] = { sparkSession.catalog.refreshByPath(path) Seq.empty[Row] } }
Example 140
Source File: ParquetOptions.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution.datasources.parquet import java.util.Locale import org.apache.parquet.hadoop.ParquetOutputFormat import org.apache.parquet.hadoop.metadata.CompressionCodecName import org.apache.spark.sql.catalyst.util.CaseInsensitiveMap import org.apache.spark.sql.internal.SQLConf val mergeSchema: Boolean = parameters .get(MERGE_SCHEMA) .map(_.toBoolean) .getOrElse(sqlConf.isParquetSchemaMergingEnabled) } object ParquetOptions { val MERGE_SCHEMA = "mergeSchema" // The parquet compression short names private val shortParquetCompressionCodecNames = Map( "none" -> CompressionCodecName.UNCOMPRESSED, "uncompressed" -> CompressionCodecName.UNCOMPRESSED, "snappy" -> CompressionCodecName.SNAPPY, "gzip" -> CompressionCodecName.GZIP, "lzo" -> CompressionCodecName.LZO) def getParquetCompressionCodecName(name: String): String = { shortParquetCompressionCodecNames(name).name() } }
Example 141
Source File: HadoopFsRelation.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution.datasources import java.util.Locale import scala.collection.mutable import org.apache.spark.sql.{SparkSession, SQLContext} import org.apache.spark.sql.catalyst.catalog.BucketSpec import org.apache.spark.sql.execution.FileRelation import org.apache.spark.sql.sources.{BaseRelation, DataSourceRegister} import org.apache.spark.sql.types.{StructField, StructType} case class HadoopFsRelation( location: FileIndex, partitionSchema: StructType, dataSchema: StructType, bucketSpec: Option[BucketSpec], fileFormat: FileFormat, options: Map[String, String])(val sparkSession: SparkSession) extends BaseRelation with FileRelation { override def sqlContext: SQLContext = sparkSession.sqlContext private def getColName(f: StructField): String = { if (sparkSession.sessionState.conf.caseSensitiveAnalysis) { f.name } else { f.name.toLowerCase(Locale.ROOT) } } val overlappedPartCols = mutable.Map.empty[String, StructField] partitionSchema.foreach { partitionField => if (dataSchema.exists(getColName(_) == getColName(partitionField))) { overlappedPartCols += getColName(partitionField) -> partitionField } } // When data and partition schemas have overlapping columns, the output // schema respects the order of the data schema for the overlapping columns, and it // respects the data types of the partition schema. val schema: StructType = { StructType(dataSchema.map(f => overlappedPartCols.getOrElse(getColName(f), f)) ++ partitionSchema.filterNot(f => overlappedPartCols.contains(getColName(f)))) } def partitionSchemaOption: Option[StructType] = if (partitionSchema.isEmpty) None else Some(partitionSchema) override def toString: String = { fileFormat match { case source: DataSourceRegister => source.shortName() case _ => "HadoopFiles" } } override def sizeInBytes: Long = { val compressionFactor = sqlContext.conf.fileCompressionFactor (location.sizeInBytes * compressionFactor).toLong } override def inputFiles: Array[String] = location.inputFiles }
Example 142
Source File: HiveSerDe.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.internal import java.util.Locale import org.apache.spark.sql.catalyst.catalog.CatalogStorageFormat case class HiveSerDe( inputFormat: Option[String] = None, outputFormat: Option[String] = None, serde: Option[String] = None) object HiveSerDe { val serdeMap = Map( "sequencefile" -> HiveSerDe( inputFormat = Option("org.apache.hadoop.mapred.SequenceFileInputFormat"), outputFormat = Option("org.apache.hadoop.mapred.SequenceFileOutputFormat"), serde = Option("org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe")), "rcfile" -> HiveSerDe( inputFormat = Option("org.apache.hadoop.hive.ql.io.RCFileInputFormat"), outputFormat = Option("org.apache.hadoop.hive.ql.io.RCFileOutputFormat"), serde = Option("org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe")), "orc" -> HiveSerDe( inputFormat = Option("org.apache.hadoop.hive.ql.io.orc.OrcInputFormat"), outputFormat = Option("org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat"), serde = Option("org.apache.hadoop.hive.ql.io.orc.OrcSerde")), "parquet" -> HiveSerDe( inputFormat = Option("org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat"), outputFormat = Option("org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat"), serde = Option("org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe")), "textfile" -> HiveSerDe( inputFormat = Option("org.apache.hadoop.mapred.TextInputFormat"), outputFormat = Option("org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"), serde = Option("org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe")), "avro" -> HiveSerDe( inputFormat = Option("org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat"), outputFormat = Option("org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat"), serde = Option("org.apache.hadoop.hive.serde2.avro.AvroSerDe"))) def sourceToSerDe(source: String): Option[HiveSerDe] = { val key = source.toLowerCase(Locale.ROOT) match { case s if s.startsWith("org.apache.spark.sql.parquet") => "parquet" case s if s.startsWith("org.apache.spark.sql.orc") => "orc" case s if s.startsWith("org.apache.spark.sql.hive.orc") => "orc" case s if s.equals("orcfile") => "orc" case s if s.equals("parquetfile") => "parquet" case s if s.equals("avrofile") => "avro" case s => s } serdeMap.get(key) } def getDefaultStorage(conf: SQLConf): CatalogStorageFormat = { val defaultStorageType = conf.getConfString("hive.default.fileformat", "textfile") val defaultHiveSerde = sourceToSerDe(defaultStorageType) CatalogStorageFormat.empty.copy( inputFormat = defaultHiveSerde.flatMap(_.inputFormat) .orElse(Some("org.apache.hadoop.mapred.TextInputFormat")), outputFormat = defaultHiveSerde.flatMap(_.outputFormat) .orElse(Some("org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat")), serde = defaultHiveSerde.flatMap(_.serde) .orElse(Some("org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe"))) } }
Example 143
Source File: TPCDSQueryBenchmarkArguments.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.execution.benchmark import java.util.Locale class TPCDSQueryBenchmarkArguments(val args: Array[String]) { var dataLocation: String = null var queryFilter: Set[String] = Set.empty parseArgs(args.toList) validateArguments() private def optionMatch(optionName: String, s: String): Boolean = { optionName == s.toLowerCase(Locale.ROOT) } private def parseArgs(inputArgs: List[String]): Unit = { var args = inputArgs while (args.nonEmpty) { args match { case optName :: value :: tail if optionMatch("--data-location", optName) => dataLocation = value args = tail case optName :: value :: tail if optionMatch("--query-filter", optName) => queryFilter = value.toLowerCase(Locale.ROOT).split(",").map(_.trim).toSet args = tail case _ => // scalastyle:off println System.err.println("Unknown/unsupported param " + args) // scalastyle:on println printUsageAndExit(1) } } } private def printUsageAndExit(exitCode: Int): Unit = { // scalastyle:off System.err.println(""" |Usage: spark-submit --class <this class> <spark sql test jar> [Options] |Options: | --data-location Path to TPCDS data | --query-filter Queries to filter, e.g., q3,q5,q13 | |------------------------------------------------------------------------------------------------------------------ |In order to run this benchmark, please follow the instructions at |https://github.com/databricks/spark-sql-perf/blob/master/README.md |to generate the TPCDS data locally (preferably with a scale factor of 5 for benchmarking). |Thereafter, the value of <TPCDS data location> needs to be set to the location where the generated data is stored. """.stripMargin) // scalastyle:on System.exit(exitCode) } private def validateArguments(): Unit = { if (dataLocation == null) { // scalastyle:off println System.err.println("Must specify a data location") // scalastyle:on println printUsageAndExit(-1) } } }
Example 144
Source File: JacksonMessageWriter.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.status.api.v1 import java.io.OutputStream import java.lang.annotation.Annotation import java.lang.reflect.Type import java.nio.charset.StandardCharsets import java.text.SimpleDateFormat import java.util.{Calendar, Locale, SimpleTimeZone} import javax.ws.rs.Produces import javax.ws.rs.core.{MediaType, MultivaluedMap} import javax.ws.rs.ext.{MessageBodyWriter, Provider} import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.databind.{ObjectMapper, SerializationFeature} @Provider @Produces(Array(MediaType.APPLICATION_JSON)) private[v1] class JacksonMessageWriter extends MessageBodyWriter[Object]{ val mapper = new ObjectMapper() { override def writeValueAsString(t: Any): String = { super.writeValueAsString(t) } } mapper.registerModule(com.fasterxml.jackson.module.scala.DefaultScalaModule) mapper.enable(SerializationFeature.INDENT_OUTPUT) mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL) mapper.setDateFormat(JacksonMessageWriter.makeISODateFormat) override def isWriteable( aClass: Class[_], `type`: Type, annotations: Array[Annotation], mediaType: MediaType): Boolean = { true } override def writeTo( t: Object, aClass: Class[_], `type`: Type, annotations: Array[Annotation], mediaType: MediaType, multivaluedMap: MultivaluedMap[String, AnyRef], outputStream: OutputStream): Unit = { t match { case ErrorWrapper(err) => outputStream.write(err.getBytes(StandardCharsets.UTF_8)) case _ => mapper.writeValue(outputStream, t) } } override def getSize( t: Object, aClass: Class[_], `type`: Type, annotations: Array[Annotation], mediaType: MediaType): Long = { -1L } } private[spark] object JacksonMessageWriter { def makeISODateFormat: SimpleDateFormat = { val iso8601 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'GMT'", Locale.US) val cal = Calendar.getInstance(new SimpleTimeZone(0, "GMT")) iso8601.setCalendar(cal) iso8601 } }
Example 145
Source File: SimpleDateParam.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.status.api.v1 import java.text.{ParseException, SimpleDateFormat} import java.util.{Locale, TimeZone} import javax.ws.rs.WebApplicationException import javax.ws.rs.core.Response import javax.ws.rs.core.Response.Status private[v1] class SimpleDateParam(val originalValue: String) { val timestamp: Long = { val format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSz", Locale.US) try { format.parse(originalValue).getTime() } catch { case _: ParseException => val gmtDay = new SimpleDateFormat("yyyy-MM-dd", Locale.US) gmtDay.setTimeZone(TimeZone.getTimeZone("GMT")) try { gmtDay.parse(originalValue).getTime() } catch { case _: ParseException => throw new WebApplicationException( Response .status(Status.BAD_REQUEST) .entity("Couldn't parse date: " + originalValue) .build() ) } } } }
Example 146
Source File: CsvSink.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.io.File import java.util.{Locale, Properties} import java.util.concurrent.TimeUnit import com.codahale.metrics.{CsvReporter, MetricRegistry} import org.apache.spark.SecurityManager import org.apache.spark.metrics.MetricsSystem private[spark] class CsvSink(val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val CSV_KEY_PERIOD = "period" val CSV_KEY_UNIT = "unit" val CSV_KEY_DIR = "directory" val CSV_DEFAULT_PERIOD = 10 val CSV_DEFAULT_UNIT = "SECONDS" val CSV_DEFAULT_DIR = "/tmp/" val pollPeriod = Option(property.getProperty(CSV_KEY_PERIOD)) match { case Some(s) => s.toInt case None => CSV_DEFAULT_PERIOD } val pollUnit: TimeUnit = Option(property.getProperty(CSV_KEY_UNIT)) match { case Some(s) => TimeUnit.valueOf(s.toUpperCase(Locale.ROOT)) case None => TimeUnit.valueOf(CSV_DEFAULT_UNIT) } MetricsSystem.checkMinimalPollingPeriod(pollUnit, pollPeriod) val pollDir = Option(property.getProperty(CSV_KEY_DIR)) match { case Some(s) => s case None => CSV_DEFAULT_DIR } val reporter: CsvReporter = CsvReporter.forRegistry(registry) .formatFor(Locale.US) .convertDurationsTo(TimeUnit.MILLISECONDS) .convertRatesTo(TimeUnit.SECONDS) .build(new File(pollDir)) override def start() { reporter.start(pollPeriod, pollUnit) } override def stop() { reporter.stop() } override def report() { reporter.report() } }
Example 147
Source File: Slf4jSink.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.util.{Locale, Properties} import java.util.concurrent.TimeUnit import com.codahale.metrics.{MetricRegistry, Slf4jReporter} import org.apache.spark.SecurityManager import org.apache.spark.metrics.MetricsSystem private[spark] class Slf4jSink( val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val SLF4J_DEFAULT_PERIOD = 10 val SLF4J_DEFAULT_UNIT = "SECONDS" val SLF4J_KEY_PERIOD = "period" val SLF4J_KEY_UNIT = "unit" val pollPeriod = Option(property.getProperty(SLF4J_KEY_PERIOD)) match { case Some(s) => s.toInt case None => SLF4J_DEFAULT_PERIOD } val pollUnit: TimeUnit = Option(property.getProperty(SLF4J_KEY_UNIT)) match { case Some(s) => TimeUnit.valueOf(s.toUpperCase(Locale.ROOT)) case None => TimeUnit.valueOf(SLF4J_DEFAULT_UNIT) } MetricsSystem.checkMinimalPollingPeriod(pollUnit, pollPeriod) val reporter: Slf4jReporter = Slf4jReporter.forRegistry(registry) .convertDurationsTo(TimeUnit.MILLISECONDS) .convertRatesTo(TimeUnit.SECONDS) .build() override def start() { reporter.start(pollPeriod, pollUnit) } override def stop() { reporter.stop() } override def report() { reporter.report() } }
Example 148
Source File: ConsoleSink.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.util.{Locale, Properties} import java.util.concurrent.TimeUnit import com.codahale.metrics.{ConsoleReporter, MetricRegistry} import org.apache.spark.SecurityManager import org.apache.spark.metrics.MetricsSystem private[spark] class ConsoleSink(val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val CONSOLE_DEFAULT_PERIOD = 10 val CONSOLE_DEFAULT_UNIT = "SECONDS" val CONSOLE_KEY_PERIOD = "period" val CONSOLE_KEY_UNIT = "unit" val pollPeriod = Option(property.getProperty(CONSOLE_KEY_PERIOD)) match { case Some(s) => s.toInt case None => CONSOLE_DEFAULT_PERIOD } val pollUnit: TimeUnit = Option(property.getProperty(CONSOLE_KEY_UNIT)) match { case Some(s) => TimeUnit.valueOf(s.toUpperCase(Locale.ROOT)) case None => TimeUnit.valueOf(CONSOLE_DEFAULT_UNIT) } MetricsSystem.checkMinimalPollingPeriod(pollUnit, pollPeriod) val reporter: ConsoleReporter = ConsoleReporter.forRegistry(registry) .convertDurationsTo(TimeUnit.MILLISECONDS) .convertRatesTo(TimeUnit.SECONDS) .build() override def start() { reporter.start(pollPeriod, pollUnit) } override def stop() { reporter.stop() } override def report() { reporter.report() } }
Example 149
Source File: GraphiteSink.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.net.InetSocketAddress import java.util.{Locale, Properties} import java.util.concurrent.TimeUnit import com.codahale.metrics.MetricRegistry import com.codahale.metrics.graphite.{Graphite, GraphiteReporter, GraphiteUDP} import org.apache.spark.SecurityManager import org.apache.spark.metrics.MetricsSystem private[spark] class GraphiteSink(val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val GRAPHITE_DEFAULT_PERIOD = 10 val GRAPHITE_DEFAULT_UNIT = "SECONDS" val GRAPHITE_DEFAULT_PREFIX = "" val GRAPHITE_KEY_HOST = "host" val GRAPHITE_KEY_PORT = "port" val GRAPHITE_KEY_PERIOD = "period" val GRAPHITE_KEY_UNIT = "unit" val GRAPHITE_KEY_PREFIX = "prefix" val GRAPHITE_KEY_PROTOCOL = "protocol" def propertyToOption(prop: String): Option[String] = Option(property.getProperty(prop)) if (!propertyToOption(GRAPHITE_KEY_HOST).isDefined) { throw new Exception("Graphite sink requires 'host' property.") } if (!propertyToOption(GRAPHITE_KEY_PORT).isDefined) { throw new Exception("Graphite sink requires 'port' property.") } val host = propertyToOption(GRAPHITE_KEY_HOST).get val port = propertyToOption(GRAPHITE_KEY_PORT).get.toInt val pollPeriod = propertyToOption(GRAPHITE_KEY_PERIOD) match { case Some(s) => s.toInt case None => GRAPHITE_DEFAULT_PERIOD } val pollUnit: TimeUnit = propertyToOption(GRAPHITE_KEY_UNIT) match { case Some(s) => TimeUnit.valueOf(s.toUpperCase(Locale.ROOT)) case None => TimeUnit.valueOf(GRAPHITE_DEFAULT_UNIT) } val prefix = propertyToOption(GRAPHITE_KEY_PREFIX).getOrElse(GRAPHITE_DEFAULT_PREFIX) MetricsSystem.checkMinimalPollingPeriod(pollUnit, pollPeriod) val graphite = propertyToOption(GRAPHITE_KEY_PROTOCOL).map(_.toLowerCase(Locale.ROOT)) match { case Some("udp") => new GraphiteUDP(host, port) case Some("tcp") | None => new Graphite(host, port) case Some(p) => throw new Exception(s"Invalid Graphite protocol: $p") } val reporter: GraphiteReporter = GraphiteReporter.forRegistry(registry) .convertDurationsTo(TimeUnit.MILLISECONDS) .convertRatesTo(TimeUnit.SECONDS) .prefixedWith(prefix) .build(graphite) override def start() { reporter.start(pollPeriod, pollUnit) } override def stop() { reporter.stop() } override def report() { reporter.report() } }
Example 150
Source File: ExecutorThreadDumpPage.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.ui.exec import java.util.Locale import javax.servlet.http.HttpServletRequest import scala.xml.{Node, Text} import org.apache.spark.SparkContext import org.apache.spark.ui.{SparkUITab, UIUtils, WebUIPage} private[ui] class ExecutorThreadDumpPage( parent: SparkUITab, sc: Option[SparkContext]) extends WebUIPage("threadDump") { // stripXSS is called first to remove suspicious characters used in XSS attacks def render(request: HttpServletRequest): Seq[Node] = { val executorId = Option(UIUtils.stripXSS(request.getParameter("executorId"))).map { executorId => UIUtils.decodeURLParameter(executorId) }.getOrElse { throw new IllegalArgumentException(s"Missing executorId parameter") } val time = System.currentTimeMillis() val maybeThreadDump = sc.get.getExecutorThreadDump(executorId) val content = maybeThreadDump.map { threadDump => val dumpRows = threadDump.sortWith { case (threadTrace1, threadTrace2) => val v1 = if (threadTrace1.threadName.contains("Executor task launch")) 1 else 0 val v2 = if (threadTrace2.threadName.contains("Executor task launch")) 1 else 0 if (v1 == v2) { threadTrace1.threadName.toLowerCase(Locale.ROOT) < threadTrace2.threadName.toLowerCase(Locale.ROOT) } else { v1 > v2 } }.map { thread => val threadId = thread.threadId val blockedBy = thread.blockedByThreadId match { case Some(_) => <div> Blocked by <a href={s"#${thread.blockedByThreadId}_td_id"}> Thread {thread.blockedByThreadId} {thread.blockedByLock}</a> </div> case None => Text("") } val heldLocks = thread.holdingLocks.mkString(", ") <tr id={s"thread_${threadId}_tr"} class="accordion-heading" onclick={s"toggleThreadStackTrace($threadId, false)"} onmouseover={s"onMouseOverAndOut($threadId)"} onmouseout={s"onMouseOverAndOut($threadId)"}> <td id={s"${threadId}_td_id"}>{threadId}</td> <td id={s"${threadId}_td_name"}>{thread.threadName}</td> <td id={s"${threadId}_td_state"}>{thread.threadState}</td> <td id={s"${threadId}_td_locking"}>{blockedBy}{heldLocks}</td> <td id={s"${threadId}_td_stacktrace"} class="hidden">{thread.stackTrace}</td> </tr> } <div class="row-fluid"> <p>Updated at {UIUtils.formatDate(time)}</p> { // scalastyle:off <p><a class="expandbutton" onClick="expandAllThreadStackTrace(true)"> Expand All </a></p> <p><a class="expandbutton hidden" onClick="collapseAllThreadStackTrace(true)"> Collapse All </a></p> <div class="form-inline"> <div class="bs-example" data-example-id="simple-form-inline"> <div class="form-group"> <div class="input-group"> Search: <input type="text" class="form-control" id="search" oninput="onSearchStringChange()"></input> </div> </div> </div> </div> <p></p> // scalastyle:on } <table class={UIUtils.TABLE_CLASS_STRIPED + " accordion-group" + " sortable"}> <thead> <th onClick="collapseAllThreadStackTrace(false)">Thread ID</th> <th onClick="collapseAllThreadStackTrace(false)">Thread Name</th> <th onClick="collapseAllThreadStackTrace(false)">Thread State</th> <th onClick="collapseAllThreadStackTrace(false)">Thread Locks</th> </thead> <tbody>{dumpRows}</tbody> </table> </div> }.getOrElse(Text("Error fetching thread dump")) UIUtils.headerSparkPage(s"Thread dump for executor $executorId", content, parent) } }
Example 151
Source File: TypeCast.scala From mimir with Apache License 2.0 | 5 votes |
package mimir.exec.spark.datasource.google.spreadsheet import java.math.BigDecimal import java.sql.{Date, Timestamp} import java.text.NumberFormat import java.util.Locale import org.apache.spark.sql.types._ import scala.util.Try object TypeCast { private[spreadsheet] def castTo( datum: String, castType: DataType, nullable: Boolean = true ): Any = { castType match { case _: ByteType => datum.toByte case _: ShortType => datum.toShort case _: IntegerType => datum.toInt case _: LongType => datum.toLong case _: FloatType => Try(datum.toFloat) .getOrElse(NumberFormat.getInstance(Locale.getDefault()).parse(datum).floatValue()) case _: DoubleType => Try(datum.toFloat) .getOrElse(NumberFormat.getInstance(Locale.getDefault()).parse(datum).doubleValue()) case _: BooleanType => datum.toBoolean case _: DecimalType => new BigDecimal(datum.replaceAll(",", "")) case _: TimestampType => Timestamp.valueOf(datum) case _: DateType => Date.valueOf(datum) case _: StringType => datum case _ => throw new RuntimeException(s"Unsupported type: ${castType.typeName}") } } }
Example 152
Source File: SnapshotGetter.scala From c4proto with Apache License 2.0 | 5 votes |
package ee.cone.c4gate.tests import java.io.BufferedInputStream import java.net.{HttpURLConnection, URL} import java.util.Locale import ee.cone.c4actor._ import ee.cone.c4gate.HttpResponse import scala.collection.JavaConverters.{iterableAsScalaIterableConverter, mapAsScalaMapConverter} //C4STATE_TOPIC_PREFIX=ee.cone.c4actor.tests.SnapshotGetterApp sbt ~'c4actor-extra-examples/runMain ee.cone.c4actor.ServerMain' class SnapshotGetterTest(execution: Execution) extends Executable { private def withConnection[T](url: String): (HttpURLConnection => T) => T = FinallyClose[HttpURLConnection, T](_.disconnect())( new URL(url).openConnection().asInstanceOf[HttpURLConnection] ) private def setHeaders(connection: HttpURLConnection, headers: List[(String, String)]): Unit = { headers.flatMap(normalizeHeader).foreach { case (k, v) => connection.setRequestProperty(k, v) } } private def normalizeHeader[T](kv: (String, T)): List[(String, T)] = { val (k, v) = kv Option(k).map(k => (k.toLowerCase(Locale.ENGLISH), v)).toList } def get(url: String): (String, Long, Long, Map[String, List[String]]) = { val time = System.currentTimeMillis() val res: HttpResponse = withConnection(url) { conn => setHeaders(conn, Nil) FinallyClose(new BufferedInputStream(conn.getInputStream)) { is => FinallyClose(new okio.Buffer) { buffer => buffer.readFrom(is) val headers = conn.getHeaderFields.asScala.map { case (k, l) => k -> l.asScala.toList }.flatMap(normalizeHeader).toMap HttpResponse(conn.getResponseCode, headers, buffer.readByteString()) } } } val took = System.currentTimeMillis() - time (SnapshotUtilImpl.hashFromData(res.body.toByteArray), res.body.size(), took, res.headers) } def run(): Unit = { val url = "http://10.20.2.216:10580/snapshots/000000000081c0e5-92b87c05-294d-3c1d-b443-fb83bdc71d20-c-lz4" for {i <- 1 to 5} yield { println(get(url)) } execution.complete() } } class SnapshotGetterApp extends ToStartApp with VMExecutionApp with ExecutableApp with RichDataApp with EnvConfigApp { override def toStart: List[Executable] = new SnapshotGetterTest(execution) :: super.toStart def assembleProfiler: AssembleProfiler = NoAssembleProfiler }
Example 153
Source File: CsvSink.scala From BigDatalog with Apache License 2.0 | 5 votes |
package org.apache.spark.metrics.sink import java.io.File import java.util.{Locale, Properties} import java.util.concurrent.TimeUnit import com.codahale.metrics.{CsvReporter, MetricRegistry} import org.apache.spark.SecurityManager import org.apache.spark.metrics.MetricsSystem private[spark] class CsvSink(val property: Properties, val registry: MetricRegistry, securityMgr: SecurityManager) extends Sink { val CSV_KEY_PERIOD = "period" val CSV_KEY_UNIT = "unit" val CSV_KEY_DIR = "directory" val CSV_DEFAULT_PERIOD = 10 val CSV_DEFAULT_UNIT = "SECONDS" val CSV_DEFAULT_DIR = "/tmp/" val pollPeriod = Option(property.getProperty(CSV_KEY_PERIOD)) match { case Some(s) => s.toInt case None => CSV_DEFAULT_PERIOD } val pollUnit: TimeUnit = Option(property.getProperty(CSV_KEY_UNIT)) match { case Some(s) => TimeUnit.valueOf(s.toUpperCase()) case None => TimeUnit.valueOf(CSV_DEFAULT_UNIT) } MetricsSystem.checkMinimalPollingPeriod(pollUnit, pollPeriod) val pollDir = Option(property.getProperty(CSV_KEY_DIR)) match { case Some(s) => s case None => CSV_DEFAULT_DIR } val reporter: CsvReporter = CsvReporter.forRegistry(registry) .formatFor(Locale.US) .convertDurationsTo(TimeUnit.MILLISECONDS) .convertRatesTo(TimeUnit.SECONDS) .build(new File(pollDir)) override def start() { reporter.start(pollPeriod, pollUnit) } override def stop() { reporter.stop() } override def report() { reporter.report() } }
Example 154
Source File: Tweets.scala From gospeak with Apache License 2.0 | 5 votes |
package gospeak.core.services.twitter import java.time.format.DateTimeFormatter import java.util.Locale import gospeak.core.domain.messages.Message import gospeak.core.domain.utils.Constants object Tweets { private val smallDate = DateTimeFormatter.ofPattern("MMMM dd").withZone(Constants.defaultZoneId.normalized()).withLocale(Locale.ENGLISH) def externalCfpCreated(msg: Message.ExternalCfpCreated): String = { val name = msg.event.twitterAccount.map(_.handle).getOrElse(msg.event.name.value) val date = msg.event.start.map(s => s" on ${smallDate.format(s)}").getOrElse("") val place = msg.event.location.map(l => s" in${l.locality.map(ll => s" $ll,").getOrElse("")} ${l.country}").getOrElse("") val endDate = msg.cfp.close.map(d => s" before ${smallDate.format(d)}").getOrElse("") val user = msg.by.links.twitter.map(_.handle).getOrElse(msg.by.name.value) val tags = (msg.event.twitterHashtag.map(" " + _.handle).toList ++ msg.event.tags.map(t => s" #${t.value.replace(" ", "")}")).mkString("") s"""!!Speaker announcement!! |$name is happening$date$place |Submit your proposals$endDate at ${msg.cfp.publicLink} |#speaking$tags |Thanks $user for the post! |""".stripMargin.trim } }
Example 155
Source File: MongodbSchemaIT.scala From Spark-MongoDB with Apache License 2.0 | 5 votes |
package com.stratio.datasource.mongodb.schema import java.text.SimpleDateFormat import java.util.Locale import com.stratio.datasource.MongodbTestConstants import com.stratio.datasource.mongodb.config.{MongodbConfig, MongodbConfigBuilder} import com.stratio.datasource.mongodb.partitioner.MongodbPartitioner import com.stratio.datasource.mongodb.rdd.MongodbRDD import com.stratio.datasource.mongodb._ import org.apache.spark.sql.mongodb.{TemporaryTestSQLContext, TestSQLContext} import org.apache.spark.sql.types.{ArrayType, StringType, StructField, TimestampType} import org.junit.runner.RunWith import org.scalatest._ import org.scalatest.junit.JUnitRunner @RunWith(classOf[JUnitRunner]) class MongodbSchemaIT extends FlatSpec with Matchers with MongoEmbedDatabase with TestBsonData with MongodbTestConstants { private val host: String = "localhost" private val collection: String = "testCol" private val readPreference = "secondaryPreferred" val testConfig = MongodbConfigBuilder() .set(MongodbConfig.Host,List(host + ":" + mongoPort)) .set(MongodbConfig.Database,db) .set(MongodbConfig.Collection,collection) .set(MongodbConfig.SamplingRatio,1.0) .set(MongodbConfig.ReadPreference, readPreference) .build() val mongodbPartitioner = new MongodbPartitioner(testConfig) val mongodbRDD = new MongodbRDD(TemporaryTestSQLContext, testConfig, mongodbPartitioner) behavior of "A schema" it should "be inferred from rdd with primitives" + scalaBinaryVersion in { withEmbedMongoFixture(primitiveFieldAndType) { mongodProc => val schema = MongodbSchema(mongodbRDD, 1.0).schema() schema.fields should have size 7 schema.fieldNames should contain allOf("string", "integer", "long", "double", "boolean", "null") schema.printTreeString() } } it should "be inferred from rdd with complex fields" + scalaBinaryVersion in { withEmbedMongoFixture(complexFieldAndType1) { mongodProc => val schema = MongodbSchema(mongodbRDD, 1.0).schema() schema.fields should have size 13 schema.fields filter { case StructField(name, ArrayType(StringType, _), _, _) => Set("arrayOfNull", "arrayEmpty") contains name case _ => false } should have size 2 schema.printTreeString() } } it should "resolve type conflicts between fields" + scalaBinaryVersion in { withEmbedMongoFixture(primitiveFieldValueTypeConflict) { mongodProc => val schema = MongodbSchema(mongodbRDD, 1.0).schema() schema.fields should have size 7 schema.printTreeString() } } it should "be inferred from rdd with more complex fields" + scalaBinaryVersion in { withEmbedMongoFixture(complexFieldAndType2) { mongodProc => val schema = MongodbSchema(mongodbRDD, 1.0).schema() schema.fields should have size 5 schema.printTreeString() } } it should "read java.util.Date fields as timestamptype" + scalaBinaryVersion in { val dfunc = (s: String) => new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH).parse(s) import com.mongodb.casbah.Imports.DBObject val stringAndDate = List(DBObject("string" -> "this is a simple string.", "date" -> dfunc("Mon Aug 10 07:52:49 EDT 2015"))) withEmbedMongoFixture(stringAndDate) { mongodProc => val schema = MongodbSchema(mongodbRDD, 1.0).schema() schema.fields should have size 3 schema.fields.filter(_.name == "date").head.dataType should equal(TimestampType) schema.printTreeString() } } }
Example 156
Source File: SimilarityFunctions.scala From spark-stringmetric with MIT License | 5 votes |
package com.github.mrpowers.spark.stringmetric import com.github.mrpowers.spark.stringmetric.expressions.HammingDistance import org.apache.spark.sql.Column import org.apache.spark.sql.catalyst.expressions.Expression import org.apache.spark.sql.functions._ import java.util.Locale import org.apache.commons.text.similarity.{ CosineDistance, JaccardSimilarity, JaroWinklerDistance, FuzzyScore } object SimilarityFunctions { private def withExpr(expr: Expression): Column = new Column(expr) val cosine_distance = udf[Option[Double], String, String](cosineDistanceFun) def cosineDistanceFun(s1: String, s2: String): Option[Double] = { val str1 = Option(s1).getOrElse(return None) val str2 = Option(s2).getOrElse(return None) val cd = new CosineDistance() Some(cd(s1, s2)) } val fuzzy_score = udf[Option[Integer], String, String](fuzzyScoreFun) def fuzzyScoreFun(s1: String, s2: String): Option[Integer] = { val str1 = Option(s1).getOrElse(return None) val str2 = Option(s2).getOrElse(return None) val f = new FuzzyScore(Locale.ENGLISH) Some(f.fuzzyScore(str1, str2)) } def hamming(s1: Column, s2: Column): Column = withExpr { HammingDistance(s1.expr, s2.expr) } val jaccard_similarity = udf[Option[Double], String, String](jaccardSimilarityFun) def jaccardSimilarityFun(s1: String, s2: String): Option[Double] = { val str1 = Option(s1).getOrElse(return None) val str2 = Option(s2).getOrElse(return None) val j = new JaccardSimilarity() Some(j.apply(str1, str2)) } val jaro_winkler = udf[Option[Double], String, String](jaroWinlkerFun) def jaroWinlkerFun(s1: String, s2: String): Option[Double] = { val str1 = Option(s1).getOrElse(return None) val str2 = Option(s2).getOrElse(return None) val j = new JaroWinklerDistance() Some(j.apply(str1, str2)) } }
Example 157
Source File: TaxiFareOps.scala From cloudflow with Apache License 2.0 | 5 votes |
package cloudflow.flink import java.util.Locale import org.joda.time.DateTime import org.joda.time.format.DateTimeFormat import scala.util.{ Failure, Success, Try } import cloudflow.flink.avro._ object TaxiFareOps { @transient val timeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").withLocale(Locale.US).withZoneUTC(); def fromString(fare: String): Try[TaxiFare] = { def parseFloat(s: String) = if (s.length() > 0) s.toFloat else 0.0f def parseDateTime(s: String) = DateTime.parse(s, timeFormatter) val tokens = fare.split(",") if (tokens.length != 8) Failure(new RuntimeException(s"Invalid record: $fare")) else Try { val rideId = tokens(0).toLong new TaxiFare( rideId, tokens(1).toLong, tokens(4), tokens(2).toLong, parseDateTime(tokens(3)).getMillis(), parseFloat(tokens(5)), parseFloat(tokens(6)), parseFloat(tokens(7)) ) }.transform(s ⇒ Success(s), e ⇒ Failure(new RuntimeException(s"Invalid record: $fare", e))) } def getEventTime(fare: TaxiFare): Long = fare.startTime }
Example 158
Source File: TaxiRideOps.scala From cloudflow with Apache License 2.0 | 5 votes |
package cloudflow.flink import java.util.Locale import org.joda.time.DateTime import org.joda.time.format.DateTimeFormat import scala.util.{ Failure, Success, Try } import cloudflow.flink.avro._ object TaxiRideOps { @transient val timeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").withLocale(Locale.US).withZoneUTC(); def fromString(ride: String): Try[TaxiRide] = { def parseFloat(s: String) = if (s.length() > 0) s.toFloat else 0.0f def parseDateTime(s: String) = DateTime.parse(s, timeFormatter) val tokens = ride.split(",") if (tokens.length != 11) Failure(new RuntimeException(s"Invalid record: $ride")) else Try { val rideId = tokens(0).toLong val (isStart, startTime, endTime) = tokens(1) match { case "START" ⇒ (true, parseDateTime(tokens(2)), parseDateTime(tokens(3))) case "END" ⇒ (false, parseDateTime(tokens(3)), parseDateTime(tokens(2))) case _ ⇒ throw new RuntimeException(s"Invalid record: $ride") } new TaxiRide( rideId, isStart, tokens(9).toLong, tokens(8).toShort, tokens(10).toLong, parseFloat(tokens(4)), parseFloat(tokens(5)), parseFloat(tokens(6)), parseFloat(tokens(7)), startTime.getMillis(), endTime.getMillis() ) }.transform(s ⇒ Success(s), e ⇒ Failure(new RuntimeException(s"Invalid record: $ride", e))) } def getEventTime(ride: TaxiRide): Long = if (ride.isStart) ride.startTime else ride.endTime }
Example 159
Source File: PulsarConfigurationUtils.scala From pulsar-spark with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.pulsar import java.util.Locale import reflect.runtime.universe._ import org.apache.pulsar.client.impl.conf.{ClientConfigurationData, ConsumerConfigurationData, ProducerConfigurationData, ReaderConfigurationData} import org.apache.pulsar.shade.com.fasterxml.jackson.annotation.JsonIgnore object PulsarConfigurationUtils { private def nonIgnoredFields[T: TypeTag] = { // a field is a Term that is a Var or a Val val fields = typeOf[T].members.collect{ case s: TermSymbol => s }. filter(s => s.isVal || s.isVar) // then only keep the ones with a JsonIgnore annotation val ignores = fields.flatMap(f => f.annotations.find(_.tpe =:= typeOf[JsonIgnore]). map((f, _))).map(t => t._1).toList fields.filterNot(ignores.contains).map(_.name.toString) } private def insensitive2Sensitive[T: TypeTag]: Map[String, String] = { nonIgnoredFields[T].map(s => s.toLowerCase(Locale.ROOT) -> s).toMap } val clientConfKeys = insensitive2Sensitive[ClientConfigurationData] val producerConfKeys = insensitive2Sensitive[ProducerConfigurationData] val consumerConfKeys = insensitive2Sensitive[ConsumerConfigurationData[_]] val readerConfKeys = insensitive2Sensitive[ReaderConfigurationData[_]] }
Example 160
Source File: JSONOptions.scala From sparkoscope with Apache License 2.0 | 4 votes |
package org.apache.spark.sql.catalyst.json import java.util.Locale import com.fasterxml.jackson.core.{JsonFactory, JsonParser} import org.apache.commons.lang3.time.FastDateFormat import org.apache.spark.internal.Logging import org.apache.spark.sql.catalyst.util.{CaseInsensitiveMap, CompressionCodecs, ParseModes} def setJacksonOptions(factory: JsonFactory): Unit = { factory.configure(JsonParser.Feature.ALLOW_COMMENTS, allowComments) factory.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, allowUnquotedFieldNames) factory.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, allowSingleQuotes) factory.configure(JsonParser.Feature.ALLOW_NUMERIC_LEADING_ZEROS, allowNumericLeadingZeros) factory.configure(JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS, allowNonNumericNumbers) factory.configure(JsonParser.Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER, allowBackslashEscapingAnyCharacter) } }
Example 161
Source File: JSONOptions.scala From multi-tenancy-spark with Apache License 2.0 | 4 votes |
package org.apache.spark.sql.catalyst.json import java.util.Locale import com.fasterxml.jackson.core.{JsonFactory, JsonParser} import org.apache.commons.lang3.time.FastDateFormat import org.apache.spark.internal.Logging import org.apache.spark.sql.catalyst.util.{CaseInsensitiveMap, CompressionCodecs, ParseModes} def setJacksonOptions(factory: JsonFactory): Unit = { factory.configure(JsonParser.Feature.ALLOW_COMMENTS, allowComments) factory.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, allowUnquotedFieldNames) factory.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, allowSingleQuotes) factory.configure(JsonParser.Feature.ALLOW_NUMERIC_LEADING_ZEROS, allowNumericLeadingZeros) factory.configure(JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS, allowNonNumericNumbers) factory.configure(JsonParser.Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER, allowBackslashEscapingAnyCharacter) } }