我有一个scala Map,想测试地图中是否存在某个值.
myMap.exists( /*What should go here*/ )
Run Code Online (Sandbox Code Playgroud) val items = List("a", "b", "c")
sqlContext.sql("select c1 from table")
.filter($"c1".isin(items))
.collect
.foreach(println)
Run Code Online (Sandbox Code Playgroud)
上面的代码抛出以下异常.
Exception in thread "main" java.lang.RuntimeException: Unsupported literal type class scala.collection.immutable.$colon$colon List(a, b, c)
at org.apache.spark.sql.catalyst.expressions.Literal$.apply(literals.scala:49)
at org.apache.spark.sql.functions$.lit(functions.scala:89)
at org.apache.spark.sql.Column$$anonfun$isin$1.apply(Column.scala:642)
at org.apache.spark.sql.Column$$anonfun$isin$1.apply(Column.scala:642)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:35)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:245)
at scala.collection.AbstractTraversable.map(Traversable.scala:104)
at org.apache.spark.sql.Column.isin(Column.scala:642)
Run Code Online (Sandbox Code Playgroud)
以下是我尝试修复它.它编译并运行但不返回任何匹配.不知道为什么.
val items = List("a", "b", "c").mkString("\"","\",\"","\"")
sqlContext.sql("select c1 from table")
.filter($"c1".isin(items))
.collect
.foreach(println)
Run Code Online (Sandbox Code Playgroud) 在Phillip Haller的博士论文中,他在(5.1未来工作)部分提到,研究的一个有趣领域是扩展框架与环境参考,他引用了Van Cutsen的论文.
摘抄:
Scala Actors库包括一个运行时系统,它为远程(即VM间)actor参与者提供基本支持.为了提供对容错的支持(例如,在移动ad-hoc网络中),使用支持volatile连接的远程actor引用来扩展框架会很有趣,类似于环境引用[36].将容错分布式编程(例如,[52,142])的事务抽象集成到Scala Actors中是未来工作的另一个有趣领域.
引用的纸张是:
[36] Tom Van Cutsem,Jessie Dedecker,Stijn Mostinckx,Elisa Gonzalez Boix,Theo D'Hondt和Wolfgang De Meuter.环境参考:寻址移动网络中的对象.[...]第986-997页.ACM,2006年10月.
这是阿卡做的吗?如果没有,考虑到Akka今天存在的事实,你认为它仍然与研究这个领域有关吗?
以下代码来自http://www.scalaclass.com/book/export/html/1来做矩阵点积.
我无法理解大括号之间的语法.
谢谢.
type Row = List[Double]
type Matrix = List[Row]
def dotProd(v1:Row, v2:Row) =
v1.zip(v2).map{ t:(Double, Double) => t._1 * t._2 }.reduceLeft(_ + _)
Run Code Online (Sandbox Code Playgroud) 我有一个父键列表,每个父键可能有零个或多个关联值.我不确定要使用哪个集合.
我在用 Map[Int,List[String]]
我宣布地图为
var nodes = new HashMap[Int, List[String]]
Run Code Online (Sandbox Code Playgroud)
然后我有两种方法来处理添加新元素.第一种是添加新密钥addNode,第二种是添加新值addValue.最初,密钥不会有任何与之关联的值.稍后,在执行期间,将关联新值.
def addNode(key: Int) = nodes += (key -> "")
def addValue(key: Int, value: String) = ???
Run Code Online (Sandbox Code Playgroud)
我不确定如何实施 addValues
为了回应@ oxbow-lakes的回答,这是我收到的错误.请注意,密钥不需要具有与之关联的值.
scala> var nodes = Map.empty[Int, List[String]]
nodes: scala.collection.immutable.Map[Int,List[String]] = Map()
scala> nodes += (1->null)
scala> nodes += (1 -> ("one" :: (nodes get 1 getOrElse Nil)))
java.lang.NullPointerException
at .<init>(<console>:9)
at .<clinit>(<console>)
at .<init>(<console>:11)
at .<clinit>(<console>)
at $print(<console>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) …Run Code Online (Sandbox Code Playgroud) 我正在通过SBT创建IntelliJ中的Scala项目.该项目将Spark作为其依赖项之一.我还处于开发阶段,所以一切都在我的本地机器上运行.
例如,如何更改日志级别等Spark配置?
有人可以解释为什么需要明确的呼叫apply()后map()
scala> val l = List(1, 2, 3)
l: List[Int] = List(1, 2, 3)
scala> l(2)
res56: Int = 3
scala> l.map(x => x*2)
res57: List[Int] = List(2, 4, 6)
scala> l.map(x => x*2)(2)
<console>:9: error: type mismatch;
found : Int(2)
required: scala.collection.generic.CanBuildFrom[List[Int],Int,?]
l.map(x => x*2)(2)
^
scala> l.map(x => x*2).apply(2)
res59: Int = 6
Run Code Online (Sandbox Code Playgroud)
谢谢.
我试图对我可以在单个JVM上运行的最大并发线程数以及创建大量线程所需的时间进行小测试.我有以下简单的代码
public class Threading {
public static void main(String[] args) {
Runnable task = new Runnable() {
@Override
public void run() {
for (int i = 0; i < 100000; i++)
;
}
};
long start = System.nanoTime();
int runs = 1000000;
for (int i = 0; i < runs; i++)
new Thread(task).start();
long time = System.nanoTime() - start;
System.out.printf("Time for task to complete: %.2f seconds", (double) time / 1000000000.0);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用VisualVM来跟踪活动线程的数量.
我得到的结果似乎很奇怪.我达到的峰值活动线程大约为100,活动线程的平均数量大约为15,并且创建100万个线程需要60多秒.

我在这里做错了吗?
我有一个 GroupBox,我可以在其中动态添加控件。我添加的控件有两种类型DevExpress.XtraEditors.TextEdit,Windows.Forms.Label
我正在尝试使用以下方法删除这些控件
foreach (Control control in salesBox.Controls)
{
control.Dispose();
salesBox.Controls.Remove(control);
}
Run Code Online (Sandbox Code Playgroud)
这是正确删除TextEdit控件但不是Label控件。循环不遍历Label控件。
我在Xcode中有一个简单的OpenGL项目.
升级到4.5后,Xcode开始以一种奇怪的方式运行
在以下行中
#include <fstream.h>
Run Code Online (Sandbox Code Playgroud)
编译失败,出现以下错误消息:未找到词法或预处理器问题'fstream.h'文件.
用于在Xcode 4.2中成功编译的相同代码
将线路更改为
#include <c++/4.2.1/backward/fstream.h>
Run Code Online (Sandbox Code Playgroud)
修复了问题,但生成了其他一些编译错误.
我试图将Scala的入门Akka教程转换为Java并用线程替换actor.
可以在http://typesafe.com/resources/tutorials/getting-started-with-akka-scala.html找到该教程.
可以从Typesafe giter8模板存储库中检出原始的Pi.scala文件
g8 typesafehub/akka-first-tutorial-scala
我想知道我所做的是否正确.
这是我的Pi.java
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
public class Pi {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Listener listener = new Listener();
//calculate(nrOfWorkers = 10, nrOfElements = 10000, nrOfMessages = 10000)
Master master = new Master(4, 1000, 1000, listener);
master.calculate();
}
}
class Worker implements Callable<Double> {
private int start;
private int nrOfElements;
public Worker(int start, int nrOfElements) {
this.start = …Run Code Online (Sandbox Code Playgroud) 我正在开发一个从网站上检索一些数据的项目.为了完成这项工作,我决定使用HtmlAgilityPack.
一切正常,除了我面临的与lambda表达式相关的问题.我收到的错误是
无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'bool'
var page = RetrievePage(url); //retrieve page
var document = GetDocument(page); //get the document
var optionNodes = document.Result.DocumentNode.SelectNodes("???"); //Select nodes based on selector
//remove empty lines
var filteredNodes = optionNodes[0].ChildNodes.Where(n => n.InnerText.Trim() != string.Empty);
using (var nodes = filteredNodes.GetEnumerator())
{
while (nodes.MoveNext())
{
//error
var children = nodes.Current.ChildNodes.Where(c => c.Attributes.Where(t => t.Value == "???"));
}
}
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助.
scala ×9
collections ×3
actor ×2
akka ×2
apache-spark ×2
c# ×2
java ×2
.net ×1
c++ ×1
concurrency ×1
dictionary ×1
lambda ×1
map ×1
opengl ×1
syntax ×1
winforms ×1
xcode ×1