我有一个简单的 IO 操作序列,暂停 5 秒。
implicit val timer = IO.timer(ExecutionContext.global)
def doSth(str: String): IO[Unit] = IO(println(str))
def greeting(): IO[Unit] =
doSth("Before timer.") *>
Timer[IO].sleep(5 second) *>
doSth("After timer")
val a = greeting().unsafeRunAsyncAndForget()
Run Code Online (Sandbox Code Playgroud)
如何使计时器没有ExecutionContext.global,IOApp或固定线程数量ExecutionContext.global?
我想将多模块 Maven 项目中的 Scala 版本从 2.11 升级到 2.13。我更改了pom.xml中的所有Scala版本和Scala后缀版本,更新了依赖版本。我在编译中遇到下一个错误:
\target\generated-sources\twirl\txt\template.template.scala:12: object JavaConversions is not a member of package collection
Run Code Online (Sandbox Code Playgroud)
在目标文件夹中,我找到了旋转模板的编译对象:
import _root_.play.twirl.api.JavaScript
import _root_.play.twirl.api.Xml
....
import scala.collection.JavaConversions._
import scala.collection.JavaConverters._
object analyze_template extends _root_.play.twirl.api.BaseScalaTemplate[pla
Run Code Online (Sandbox Code Playgroud)
来自旋转模板:
@(sourceIncrementName: String, sourceSnapshotName: String)
Run Code Online (Sandbox Code Playgroud)
你能告诉我如何解决吗?
在 Maven 中,我有 scala-maven-plugin 和 twirl 插件:
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
<configuration>
<jvmArgs>
<jvmArg>-Xms128m</jvmArg>
<jvmArg>-Xmx1024m</jvmArg>
<jvmArg>-XX:MaxPermSize=512m</jvmArg>
</jvmArgs>
<args>
<arg>-unchecked</arg>
<arg>-deprecation</arg>
<arg>-explaintypes</arg>
<arg>-feature</arg>
<arg>-language:implicitConversions</arg>
</args>
<recompileMode>incremental</recompileMode>
<scalaVersion>2.13</scalaVersion>
</configuration>
</plugin>
<plugin>
<groupId>com.jakewharton.twirl</groupId>
<artifactId>twirl-maven-plugin</artifactId>
<version>1.1.0</version>
<executions>
<execution> …Run Code Online (Sandbox Code Playgroud) 我有一个 sbt 项目,我想使用 scala 测试和共享 Spark 会话进行测试。几周前,我的项目开始出错。
java.lang.ExceptionInInitializerError
at org.apache.spark.sql.execution.SparkPlan.executeQuery(SparkPlan.scala:215)
at org.apache.spark.sql.execution.SparkPlan.execute(SparkPlan.scala:176)
.....
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Scala module 2.10.0 requires Jackson Databind version >= 2.10.0 and < 2.11.0
at com.fasterxml.jackson.module.scala.JacksonModule.setupModule(JacksonModule.scala:61)
at com.fasterxml.jackson.module.scala.JacksonModule.setupModule$(JacksonModule.scala:46)
Run Code Online (Sandbox Code Playgroud)
有一个非常简单的测试
import org.apache.spark.sql.QueryTest.checkAnswer
import org.apache.spark.sql.Row
import org.apache.spark.sql.test.SharedSparkSession
class SparkTestSpec extends SharedSparkSession {
import testImplicits._
test("join - join using") {
val df = Seq(1, 2, 3).toDF("int")
checkAnswer(df, Row(1) :: Row(2) :: Row(3) :: Nil)
}
}
Run Code Online (Sandbox Code Playgroud)
和 sbt 配置
ThisBuild / scalaVersion := "2.12.10"
val sparkVersion = "3.1.0"
val …Run Code Online (Sandbox Code Playgroud) 我有带有输入参数映射的方法接口。我想添加当此映射通过任何字符串键返回相同值时调用此方法。您能帮我定义一个映射,该映射将通过任何字符串键返回相同的值吗?
def test(m: Map[String, Int]): Unit = {
// some logic
}
val m = Map((???, 1))
m("")
res0: Int = 1
m("a")
res0: Int = 1
m("b")
res0: Int = 1
Run Code Online (Sandbox Code Playgroud)