Tag: 斯卡拉

如何引用另一个sbt项目的外部sbt项目?

我有以下设置的Scala应用程序和一个公共的核心库:根 -> /ApplicationA -> /project -> /build.sbt -> /CoreLibrary -> /project -> /build.sbt 我想将ApplicationA的引用添加到Eclipse项目引用的CoreLibrary中,这样每次CoreLibrary更改ApplicationA时也都会生成。 我已经尝试了ApplicationA的build.Scala的以下内容: val core = Project( id = "platform-core", base = file("../CoreLibrary")) val main = Project(id = "application, base = file(".")).dependsOn(core) 但是,编译应用程序时SBT会抱怨依赖项只能是子目录!!: java.lang.AssertionError: assertion failed: Directory C:\git\CoreLibrary is not contained in build root C:\git\ApplicationA 这似乎是完全简单的,有这个项目依赖的正确方法是什么?

Spark:使用单键RDDjoin2元组密钥RDD的最佳策略是什么?

我有两个我想join的RDD,他们看起来像这样: val rdd1:RDD[(T,U)] val rdd2:RDD[((T,W), V)] 恰好是rdd1是唯一的,并且rdd1的元组键值是唯一的。 我想join两个数据集,以便获得以下rdd: val rdd_joined:RDD[((T,W), (U,V))] 什么是最有效的方法来实现呢? 以下是我想到的一些想法。 选项1: val m = rdd1.collectAsMap val rdd_joined = rdd2.map({case ((t,w), u) => ((t,w), u, m.get(t))}) 选项2: val distinct_w = rdd2.map({case ((t,w), u) => w}).distinct val rdd_joined = rdd1.cartesian(distinct_w).join(rdd2) 选项1将收集所有的数据,掌握,对吧? 所以,如果rdd1很大(在我的情况下它相对较大,虽然比rdd2小一个数量级)似乎不是一个好的select。 选项2做了一个丑陋的独特的笛卡尔产品,这看起来效率很低。 另一种可能性是我想到的(但还没有尝试过),就是做选项1并播放地图,不过最好以“智能”的方式进行广播,以便地图的键与rdd2键。 有没有人遇到过这种情况? 我很乐意有你的想法。 谢谢!

从Scala文件创build一个jar文件

我是新来的Scala,不知道Java。 我想从一个简单的Scala文件中创build一个jar文件。 所以我有我的HelloWorld.scala,生成一个HelloWorld.jar。 MANIFEST.MF: Main-Class: HelloWorld 在控制台中我运行: fsc HelloWorld.scala jar -cvfm HelloWorld.jar Manifest.mf HelloWorld\$.class HelloWorld.class java -jar HelloWorld.jar => "Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/jar" java -cp HelloWorld.jar HelloWorld => Exception in thread "main" java.lang.NoClassDefFoundError: scala/ScalaObject at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:675) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) at java.net.URLClassLoader.access$100(URLClassLoader.java:56) at java.net.URLClassLoader$1.run(URLClassLoader.java:195) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at […]

什么是Scala等同于Java构build器模式?

在Java中我每天都在做的工作中,我使用了很多new PizzaBuilder(Size.Large).onTopOf(Base.Cheesy).with(Ingredient.Ham).build();界面的构build器,例如: new PizzaBuilder(Size.Large).onTopOf(Base.Cheesy).with(Ingredient.Ham).build(); 使用快捷的Java方法,每个方法调用都会改变构build器实例并返回。 毫无疑问,它涉及更多的打字,在修改之前首先克隆build造者。 构build方法最终在build设者状态上做了大量的工作。 什么是在Scala中实现相同的好方法? 如果我想确保onTopOf(base:Base)只被调用一次,然后只with(ingredient:Ingredient)和build():Pizza可以被称为,a-la是一个定向的build设者,我将如何去接近这个?

标准的方式为空数组在斯卡拉?

在Scala中获得一个空数组的规范方法是什么? new Array[String](0)太冗长了。

如何生成一个随机数列表?

这可能是史上最不重要的问题,但它困扰着我。 我将如何生成一个随机数列表。 我到目前为止: def n_rands(n : Int) = { val r = new scala.util.Random 1 to n map { _ => r.nextInt(100) } } 哪些工作,但不看起来非常Scalarific给我。 我接受build议。 编辑 这并不是因为它与现在的有趣和显而易见的相关,以下看起来像是有效的: 1 to 20 map r.nextInt 但是返回列表中每个条目的索引也是最后一个的上限。 第一个数字必须小于1,第二个数字小于2,依此类推。 我跑了三四次,注意到“呃,结果总是从0开始……”

如何在Spark SQL中按降序排列?

我试过df.orderBy("col1").show(10)但它按升序sorting。 df.sort("col1").show(10)也按降序排列。 我查看了stackoverflow,我发现的答案都已经过时或被引用到RDD 。 我想在spark中使用本地数据框。

如何在sbt中看到依赖树?

我正在试图显示文档中描述的SBT依赖关系树: sbt inspect tree clean 但是我得到这个错误: [error] inspect usage: [error] inspect [uses|tree|definitions] <key> Prints the value for 'key', the defining scope, delegates, related definitions, and dependencies. [error] [error] inspect [error] ^ 哪里不对? 为什么SBT不生成树?

Scala:删除对象列表中的重复项

我有一个列表对象List[Object]都是从同一个类实例化。 这个类有一个必须是唯一Object.property的字段。 迭代对象列表并删除具有相同属性的所有对象(但第一个)的最干净的方法是什么?

澄清需要关于Scala的期货和承诺

我试图让我的头在斯卡拉的承诺和未来的build设。 我一直在阅读Scala文档中的期货和承诺 ,并且有些困惑,因为我有一种感觉,承诺和期货的概念混在一起。 在我的理解中,一个承诺是一个容器,我们可以在以后的时间内填充价值。 而未来是某种asynchronous操作,可以在不同的执行path中完成。 在Scala中,我们可以使用附加的callback来获得结果。 我失去的是承诺有未来吗? 我也曾经在Clojure上看过这些概念,假设承诺和未来有一些通用的概念,但似乎我错了。 诺言p完成未来回报的未来。 这个未来是对承诺的具体体现。 根据实施情况,情况可能是p.future eq p。 val p = promise[T] val f = p.future