我想知道测试演员是否已经停止在akka的规范方式是什么.这是我目前正在做的一个例子; 我担心我会让它变得复杂.
import akka.actor.{Terminated, Actor, Props, ActorSystem}
import akka.testkit.TestProbe
class MyActor extends Actor {
import MyActor._
override def receive: Receive = {
case Stop => context.stop(self)
}
}
object MyActor {
def props = Props(new MyActor)
case object Stop
}
object MyActorSpec {
val system = ActorSystem()
val myActor = system.actorOf(MyActor.props)
val testProbe = TestProbe()
case object MyActorStopped
val watcher = system.actorOf(Props(new Actor {
context.watch(myActor)
override def receive: Actor.Receive = {
case Terminated(`myActor`) => testProbe.ref ! MyActorStopped
}
}))
myActor …
Run Code Online (Sandbox Code Playgroud) 我安装了Anaconda(在ubuntu 12.04.03上),我正在尝试安装,pymongo
以便conda识别它.我知道有类似的问题浮出水面; 但是对Python来说是新手,我真的很感激一个明确的答案来帮助我"开始" - 我目前失败了:(
欢呼任何帮助
编辑:
看到这个问题已被搁置,我继续坚持下去.当我跑:
sudo pip install pymongo
Run Code Online (Sandbox Code Playgroud)
安装到/usr/local/lib/python2.7/dist-packages/
,Anaconda似乎没有从这个位置导入模块(有谁知道我怎么能改变这个?).所以相反,我跑了:
sudo pip install -d anaconda/pkgs/ pymongo
tar -zxvf pymongo-2.6.3.tar.gz
cd pymongo-2.6.3/
python setup.py install
Run Code Online (Sandbox Code Playgroud)
现在我可以导入了pymongo
.这是规范的方式吗?我猜不是......就像我说的,我是新手,所以任何建议或意见都非常赞赏.
这是我遇到的模式:
一个演员A
有多个孩子C1
,...... , Cn
. 收到消息后,A
将其发送给每个子节点,每个子节点对消息进行一些计算,并在完成时将其发送回A
.A
然后,我想把所有孩子的结果结合起来传递给另一个演员.
这个问题的解决方案是什么样的?或者这是反模式?在哪种情况下应该如何处理这个问题?
这是一个简单的例子,希望能够说明我目前的解决方案.我担心的是重复的代码(直到对称); 并没有很好地延伸到"很多"的孩子; 并且很难看出发生了什么.
import akka.actor.{Props, Actor}
case class Tagged[T](value: T, id: Int)
class A extends Actor {
import C1._
import C2._
val c1 = context.actorOf(Props[C1], "C1")
val c2 = context.actorOf(Props[C2], "C2")
var uid = 0
var c1Results = Map[Int, Int]()
var c2Results = Map[Int, Int]()
def receive = {
case n: Int => {
c1 ! Tagged(n, uid)
c2 ! Tagged(n, uid)
uid …
Run Code Online (Sandbox Code Playgroud) 假设我有一个“广泛的”密封类层次结构:
sealed trait Alphabet
case class A(word: String) extends Alphabet
...
case class Z(word: String) extends Alphabet
Run Code Online (Sandbox Code Playgroud)
并说我为层次结构中的每个子类定义了一个类型类实例:
trait SwearWordFinder[T <: Alphabet] {
def isSwearWord(x: T): Boolean
}
val swearWordFinderA = new SwearWordFinder[A] { ... }
...
val swearWordFinderZ = new SwearWordFinder[Z] { ... }
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以为Alphabet
特征本身定义类型类实例,而不必通过模式匹配来实现(如下所示)?
def isSwearWord(x: Alphabet): Boolean = x match {
case a: A => swearWordFinderA.isSwearWord(a)
...
case z: Z => swearWordFinderZ.isSwearWord(z)
}
Run Code Online (Sandbox Code Playgroud) 试图了解 Hive 分区与 Spark 分区的关系,最终解决了一个关于连接的问题。
我有 2 个外部 Hive 表;均由 S3 存储桶支持并由 分区date
;所以在每个存储桶中都有名称为 format 的键date=<yyyy-MM-dd>/<filename>
。
问题 1:
如果我将此数据读入 Spark:
val table1 = spark.table("table1").as[Table1Row]
val table2 = spark.table("table2").as[Table2Row]
Run Code Online (Sandbox Code Playgroud)
那么结果数据集将分别有多少个分区?分区等于 S3 中的对象数量?
问题2:
假设这两种行类型具有以下架构:
Table1Row(date: Date, id: String, ...)
Table2Row(date: Date, id: String, ...)
Run Code Online (Sandbox Code Playgroud)
并且我想加入table1
和table2
在领域date
和id
:
table1.joinWith(table2,
table1("date") === table2("date") &&
table1("id") === table2("id")
)
Run Code Online (Sandbox Code Playgroud)
Spark 是否能够利用被连接的字段之一是 Hive 表中的分区键来优化连接?如果是这样怎么办?
问题 3:
假设现在我正在使用RDD
s 代替:
val rdd1 = table1.rdd …
Run Code Online (Sandbox Code Playgroud) V1:假设功能f(x, ...)
和g(x , ...)
可以传递不同的参数.如果我要使用它们来定义一个新函数,我可以通过...
明确定义的运算符传递参数吗?举个简单的例子:
f1 = function(x, n = 1) x + n
g1 = function(x, m = 1) x + m
f = function(x, ...) f1(x, ...)
g = function(x, ...) g1(x, ...)
h = function(x, ...) {
fgList = list()
fgList[["f"]] = f(x, ...)
fgList[["g"]] = g(x, ...)
return(fgList)
}
h(1:4)
# $f
# [1] 2 3 4 5
# $g
# [1] 2 3 4 5
h(1:4, n = 2) …
Run Code Online (Sandbox Code Playgroud) 我几乎完成了一个Web应用程序,它允许用户使用创建的文本输入控件对Web应用程序下的数据框进行子集化textInput
; 请参阅我的相关问题,将字符串解析为表达式.
如果我可以增加此文本输入控件的宽度,它将更加用户友好.有人知道怎么做这个吗?
欢呼任何帮助.
说我有一个字符串,如"x = 1, y = 'cat', z = NULL"
.我想获取代码创建的列表list(x = 1, z = 'cat', z = NULL)
.这是我的第一次尝试,我知道这很可怕:
parse_text <- function(x) parse(text = x)[[1]]
strsplit2 <- function(x, ...) strsplit(x, ...)[[1]]
trim_whitespace <- function (x) gsub("^\\s+|\\s+$", "", x)
# take 1
x <- "nk = 1, ncross = 1, pmethod = 'backward'"
x <- strsplit2(x, ",")
xs <- lapply(x, strsplit2, "=")
keys <- lapply(xs, function(x) trim_whitespace(x[1]))
vals <- lapply(xs, function(x) parse_text(x[2]))
setNames(vals, keys)
Run Code Online (Sandbox Code Playgroud)
这就是我想象的一种更规范的方法:
# take …
Run Code Online (Sandbox Code Playgroud) Scala新手,XML
在Scala工作表中读取文件时遇到问题.到目前为止,我有:
C:\
驱动器中C:\eclipse\workspace\xml_data
xml
文件...\xml_data\music.xml
创建了一个包sample_data
并创建了以下对象(带有文件路径:) ...\xml_data\src\sample_data\SampleData.scala
:
package sample_data
import scala.xml.XML
object SampleData {
val data = XML.loadFile("music.xml")
}
object PrintSampleData extends Application {
println(SampleData.data)
}
Run Code Online (Sandbox Code Playgroud)但是,当我创建Scala工作表时,这运行正常test_sample_data.sc
:
import sample_data.SampleData
object test {
println(SampleData.data)
}
Run Code Online (Sandbox Code Playgroud)
我得到的java.lang.ExceptionInInitializerError
包括:Caused by: java.io.FileNotFoundException: music.xml (The system cannot find the file specified)
.
工作区是C:\eclipse\workspace
.任何帮助或见解非常感谢.干杯!
更新:
按照aepurniet的建议,我跑了new java.io.File(".").getAbsolutePath()
并分别获得了以下内容:
SampleData.scala
: C:\eclipse\workspace\xml_data\.
test_sample_data.sc
: C:\eclipse\. …
scala ×4
r ×3
akka ×2
anaconda ×1
apache-spark ×1
concurrency ×1
conda ×1
eclipse ×1
hive ×1
mapreduce ×1
pymongo ×1
python ×1
shiny ×1
typeclass ×1
unit-testing ×1