sbt 子项目可以有自己的project目录吗?或者只有根项目可以使用 .scala 帮助文件为构建项目目录?。下面是我目前的构建结构。在/my-project/sub-projects/sub-project-1/build.sbt无法定义访问对象/my-project/sub-projects/sub-project-1/SubProjectHelper.scala。
/my-project
build.sbt
/projects
Helper.scala
sub-projects
sub-project-1
build.sbt
/projects
SubProjectHelper.scala
Run Code Online (Sandbox Code Playgroud)
更新: sub-project-1/build.sbt 中的以下 sbt 定义
lazy val localhost = (project in file(".")).settings (
name := """localhost""",
version := Common.version,
scalaVersion := Common.scalaVersion,
libraryDependencies ++= Common.dependencies,
libraryDependencies ++= Localhost.dependencies
)
Run Code Online (Sandbox Code Playgroud)
因以下错误而失败
libraryDependencies ++= Localhost.dependencies
^
sbt.compiler.EvalException: Type error in expression
at sbt.compiler.Eval.checkError(Eval.scala:384)
at sbt.compiler.Eval.compileAndLoad(Eval.scala:183)
at sbt.compiler.Eval.evalCommon(Eval.scala:152)
at sbt.compiler.Eval.evalDefinitions(Eval.scala:122)
at sbt.EvaluateConfigurations$.evaluateDefinitions(EvaluateConfigurations.scala:271)
at sbt.EvaluateConfigurations$.evaluateSbtFile(EvaluateConfigurations.scala:109)
at sbt.Load$.sbt$Load$$loadSettingsFile$1(Load.scala:712)
Run Code Online (Sandbox Code Playgroud)
Common 定义在 /my-project/projects/Common.scala 中并且没有问题。但是Localhost定义在/my-project/sub-projects/sub-project-1/projects/SubProjectHelper.scala在sub-project-1 build.sbt中没有正确解析
我希望并行启动两个或更多的Future/Promise,即使其中一个已启动的Future/Promise失败并且不想等待其余的完成,也会失败.在Scala中组合此管道的最惯用方法是什么.
编辑:更多上下文信息.
我必须启动两个外部进程,一个写入fifo文件,另一个从中读取.假设作者进程失败; 读者线程可能永远挂起等待文件的任何输入.因此,我希望并行启动这两个进程并快速失败,即使其中一个Future/Promise失败而没有等待另一个进程完成.
下面是更准确的示例代码.命令并不完全cat和tail.我使用它们是为了简洁.
val future1 = Future { executeShellCommand("cat file.txt > fifo.pipe") }
val future2 = Future { executeShellCommand("tail fifo.pipe") }
Run Code Online (Sandbox Code Playgroud) 我在ssh配置文件中有如下所示的内容.我将不得不将相同的配置设置为我的Jsch会话.Jsch支持如下设置配置
session.setConfig(String name, String value);
session.setConfig(HashTable config);
session.setConfig(Properties config);
Run Code Online (Sandbox Code Playgroud)
但似乎没有一个支持分层嵌套设置(即设置仅适用于一系列主机)
Host git.*
User git
ProxyCommand ssh -q github.example.com nc git %p
Run Code Online (Sandbox Code Playgroud)
打开其他建议,例如创建SSH隧道或其他.
为什么Scala不支持普通类的多重继承?我们不能应用相同的线性化逻辑我们也适用于Traits的类吗?这应该是可能的,因为它是通过C3线性化在Python中实现多重继承(使用普通类)的方式.
我对Scala Spark比较陌生.我有一个map方法的问题.
我的理解:map是一个RDD方法,它接受一个函数作为其参数,如:map(line => line.split(","))
我发现很难理解这种表达方式.
val uniqueUsers = data.map { case (user, product, price) => user }.distinct().count()
Run Code Online (Sandbox Code Playgroud)
有人可以为我解释两件事:
case (user, product, price) => user视为一种功能吗?如果没有,那是什么?先感谢您.
考虑一个场景,Spark(或任何其他Hadoop框架)从S3读取大文件(例如1 TB)。多个Spark执行程序如何从S3并行读取非常大的文件。在HDFS中,这个非常大的文件将分布在多个节点上,每个节点都有一个数据块。在对象存储中,我认为整个文件将位于单个节点中(忽略副本)。这将大大降低读取吞吐量/性能。
同样,在HDFS中,大型文件的写入也应该比S3快得多,因为HDFS中的写入将分散在多个主机上,而所有数据都必须通过S3中的一台主机(忽略复制)。
因此,这是否意味着与大数据世界中的HDFS相比,S3的性能明显较差。
我有一个Runner实现CoroutineScope接口的类,如下所示。它有一个名为 的挂起函数run。当我在此挂起函数中使用协同例程构建器函数(launch, )时,我收到以下警告asyncrun
由于挂起函数的 CoroutineScope 接收器而导致的 coroutineContext 不明确
该类Runner实现了一个 coroutineContext 属性。有人可以解释警告消息背后的逻辑吗?
class Runner: CoroutineScope {
override private val coroutineContext = Dispatchers.IO
suspend fun run() {
val job1 = launch { delay(2000); println("launching job1") }
val job2 = launch { delay(2000); println("launching job2") }
listOf(job1, job2).forEach { it.join() }
}
}
Run Code Online (Sandbox Code Playgroud) GridLayout 创建一个网格矩阵,其维度(没有行和列)可以使用两个int参数进行自定义,这些参数作为其构造函数的一部分.
为什么我们没有这样的选择GridBagLayout呢?
在使用a的典型场景中Gridbaglayout,如果我想要将组件放置在极右或中间或任何其他任意位置,如果我知道Grid Matrix的大小,那会不会有帮助.
我在这个博客中看到了以下片段
val warehouseLocation = "file:${system:user.dir}/spark-warehouse"
val spark = SparkSession
.builder()
.appName("SparkSessionZipsExample")
.config("spark.sql.warehouse.dir", warehouseLocation)
.enableHiveSupport()
.getOrCreate()
Run Code Online (Sandbox Code Playgroud)
如何user.dir在warehouseLocation值中替换系统属性.不应该是字符串s"file:${System.getProperty("user.dir")}/spark-warehouse"?
scala ×5
apache-spark ×3
java ×2
amazon-s3 ×1
grid-layout ×1
hadoop ×1
jsch ×1
kotlin ×1
oop ×1
promise ×1
sbt ×1
ssh ×1
ssh-tunnel ×1
swing ×1
teradata ×1