使用data.table,我们可以使用 将一个数据集中的值与另一个数据集中的最近值连接起来roll = "nearest"。一些示例数据:
dt1 <- data.table(x = c(15,101), id1 = c("x", "y"))
dt2 <- data.table(x = c(10,50,100,200), id2 = c("a","b","c","d"))
Run Code Online (Sandbox Code Playgroud)
使用roll = "nearest",我可以将“dt1”中的每个“x”与 dt2 中最接近的“x”连接起来:
dt2[dt1, roll = "nearest", on = "x"]
# x id2 id1
# 1: 15 a x
# 2: 101 c y
Run Code Online (Sandbox Code Playgroud)
例如,x = 15在 'dt1' 中,x'dt2' 中最接近的值是x = 10,我们得到相应的 'id2',即"a"。
但是,如果不是获得一个最近的值,而是想要获得n 个最近的值呢?例如,如果我想要2 个最接近的 x …
我在这里使用PageRank Benchmark示例运行了带有hadoop 2.2.0的Giraph 1.0.0 .
突然间我得到了这个错误结果:
线程"main"中的异常java.lang.IllegalArgumentException:checkLocalJobRunnerConfiguration:使用LocalJobRunner时,必须只有一个worker,因为一次只能有一个任务!在org.apache.giraph.job.GiraphJob.checkLocalJobRunnerConfiguration(GiraphJob.java:151)在org.apache.giraph.job.GiraphJob.run(GiraphJob.java:225)在org.apache.giraph.benchmark.GiraphBenchmark.run (GiraphBenchmark.java:90)在org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)在org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)在org.apache. giraph.benchmark.PageRankBenchmark.main(PageRankBenchmark.java:71)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke(Method.java:606)在org.apache.hadoop.util.RunJar.main(RunJar.java:212)
当我将工人数量改为1时,我得到了:
线程"main"中的异常java.lang.IllegalArgumentException:checkLocalJobRunnerConfiguration:使用LocalJobRunner时,由于一次只有1个任务,因此无法在拆分主/工作模式下运行!在org.apache.giraph.job.GiraphJob.checkLocalJobRunnerConfiguration(GiraphJob.java:157)在org.apache.giraph.job.GiraphJob.run(GiraphJob.java:225)在org.apache.giraph.benchmark.GiraphBenchmark.run (GiraphBenchmark.java:90)在org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)在org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)在org.apache. giraph.benchmark.PageRankBenchmark.main(PageRankBenchmark.java:71)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke(Method.java:606)在org.apache.hadoop.util.RunJar.main(RunJar.java:212)
有解决方案吗
我目前正在使用 IntelliJ IDEA 来开发和运行我的 Spark 应用程序。我已将其设置为conf/spark-defaults.conf:
spark.eventLog.enabled true
spark.eventLog.dir file:/home/user/spark-2.2.0/spark-events
spark.history.fs.logDirectory file:/home/user/spark-2.2.0/spark-events
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我也有这个:
val session = SparkSession.builder()
.appName("MySparkApp")
.master("spark://user:7077")
.config("spark.jars", "target/mysparkapp.jar")
.config("spark.eventLog.enabled","true")
.config("spark.eventLog.dir","file:/home/user/spark-2.2.0/spark-events")
.config("spark.history.fs.logDirectory","file:/home/user/spark-2.2.0/spark-events")
.getOrCreate()
Run Code Online (Sandbox Code Playgroud)
应用程序完成后,我可以在 Spark History Server 中看到 DAG 可视化。但是,spark web ui 中没有显示 DAG 可视化。知道为什么会这样吗?
我正在使用 Ubuntu 57.0.1(64 位)的 Mozilla Firefox。这是我的历史服务器的屏幕截图:
我的网络用户界面:
我一直在研究 Spark 的文档,但仍然找不到如何在进行线性回归后获取协方差矩阵。
给定输入训练数据,我做了一个非常简单的线性回归,与此类似:
val lr = new LinearRegression()
val fit = lr.fit(training)
Run Code Online (Sandbox Code Playgroud)
获取回归参数很简单fit.coefficients,但似乎没有关于如何获取协方差矩阵的信息。
为了澄清一下,我正在寻找类似于vcovR 中的函数。有了这个,我应该能够做一些类似vcov(fit)获取协方差矩阵的事情。任何其他有助于实现这一目标的方法也都可以。
编辑
这里详细讨论如何从线性回归得到协方差矩阵。标准差很容易获得,因为它是由 提供的fit.summary.meanSsquaredError。然而,参数(X'X) -1很难得到。看看这是否可以用来以某种方式计算协方差矩阵,这将是很有趣的。
scala covariance linear-regression apache-spark apache-spark-mllib
假设我有一个 3D 平面方程:
ax+by+cz=d
如何在 python matplotlib 中绘制它?
我看到了一些使用 的示例plot_surface,但它接受 x、y、z 值作为二维数组。我不明白如何将我的方程转换为参数输入plot_surface或 matplotlib 中可用于此目的的任何其他函数。
这是一个相当基本的问题,但在谷歌搜索几个小时后我找不到令人满意的答案。从这里的例子来看,制作网络套接字的方法是这样的:
控制器代码:
import play.api.mvc._
import play.api.libs.streams.ActorFlow
import javax.inject.Inject
import akka.actor.ActorSystem
import akka.stream.Materializer
class Application @Inject()(cc:ControllerComponents) (implicit system: ActorSystem, mat: Materializer) extends AbstractController(cc) {
def socket = WebSocket.accept[String, String] { request =>
ActorFlow.actorRef { out =>
MyWebSocketActor.props(out)
}
}
}
Run Code Online (Sandbox Code Playgroud)
演员代码:
import akka.actor._
object MyWebSocketActor {
def props(out: ActorRef) = Props(new MyWebSocketActor(out))
}
class MyWebSocketActor(out: ActorRef) extends Actor {
def receive = {
case msg: String =>
out ! ("I received your message: " + msg)
}
}
Run Code Online (Sandbox Code Playgroud)
但是我到底如何通过网络套接字将消息从控制器发送到参与者呢?假设在控制器代码中,我有一个操作代码,用于处理按下按钮时的情况,它将向演员发送一个字符串块。如何从控制器代码将此字符串发送到上面的参与者?
假设我有这张桌子
a b
1 5 12
2 6 17
3 7 28
4 8 12
5 9 17
6 10 28
7 15 12
8 25 14
9 13 29
Run Code Online (Sandbox Code Playgroud)
还有另一个带有索引范围的表:
start end
1 2 3
2 5 7
Run Code Online (Sandbox Code Playgroud)
我想根据第二个表中的索引范围获取第一个表中的行,并使用组名进行区分,如下所示:
a b group
2 6 17 1
3 7 28 1
5 9 17 2
6 10 28 2
7 15 12 2
Run Code Online (Sandbox Code Playgroud)
我如何在 R 中实现这一目标?
我需要监视java应用程序,我正在使用javamelody.
但问题是,我必须得到javamelody的数据,所以我可以在另一个屏幕上显示它.我知道javamelody将其rdd文件存储在temp/javamelody目录中,现在我需要将storage-directory更改为另一个路径,以便我可以从该路径获取数据.
可以吗?
谢谢
我使用C代码写入磁盘.
首先我尝试使用malloc,发现写入不起作用(写入返回-1):
fd = open('/dev/sdb', O_DIRECT | O_SYNC | O_RDWR);
void *buff = malloc(512);
lseek(fd, 0, SEEK_SET);
write(fd, buff, 512);
Run Code Online (Sandbox Code Playgroud)
然后我改变了第二行,它有效:
void *buff;
posix_memalign(&buff,512,512);
Run Code Online (Sandbox Code Playgroud)
但是,当我将lseek偏移量更改为1:时lseek(fd, 1, SEEK_SET);,写入不再起作用.
首先,为什么没有malloc工作?
然后,我知道在我的情况下,posix_memalign保证内存对齐的起始地址必须是512的倍数.但是,内存对齐和写入不应该是一个单独的进程吗?那么为什么我不能写任何我想要的偏移?
我有一个 List[Any] 队列,但不知何故出队不会返回正确的结果,也不会从队列中删除该项目。知道为什么会这样吗?
下面是一个例子:
scala> val a = scala.collection.immutable.Queue(List(1, "A", "B", 987), List(2, "C", "D", 456), List(3, "E", "F", 123))
a: scala.collection.immutable.Queue[List[Any]] = Queue(List(1, A, B, 987), List(2, C, D, 456), List(3, E, F, 123))
scala> a.dequeue
res5: (List[Any], scala.collection.immutable.Queue[List[Any]]) = (List(1, A, B, 987),Queue(List(2, C, D, 456), List(3, E, F, 123)))
scala> a
res6: scala.collection.immutable.Queue[List[Any]] = Queue(List(1, A, B, 987), List(2, C, D, 456), List(3, E, F, 123))
Run Code Online (Sandbox Code Playgroud) 有没有办法知道libgdx中两个Rectangle之间的交叉矩形区域,如c#http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.rectangle.intersect.aspx中的Rectangle ?
我需要获得两个矩形之间的交集矩形区域,但libgdx中的重叠方法只返回两个矩形是否相交的布尔值.我已经阅读过Intersector类,但它没有提供任何帮助.
我正在使用libgdx来开发mygame.
我正在使用GestureListener来处理我的触摸事件.我的目标是当玩家在屏幕上触摸时让角色向右或向左移动.
问题是,GestureListener没有任何方法来处理这个问题.如果我正在使用平移,则播放器必须滑动才能触发该方法.此外,GestureListener没有touchUp方法,所以我无法组合touchDown和touchUp.
有没有办法做到这一点?
假设我有这样的Scala列表:
val mylist = List(4,2,5,6,4,4,2,6,5,6,6,2,5,4,4)
Run Code Online (Sandbox Code Playgroud)
如何将其转换为计数列表和元素列表?例如,我想转换mylist为:
val count = List(3,5,3,4)
val elements = List(2,4,5,6)
Run Code Online (Sandbox Code Playgroud)
这意味着,在中mylist,我有3个出现2,有5个出现4,依此类推。
在过程中,这很容易,因为我可以制作两个空列表(用于计数和元素)并在进行迭代时填充它们。但是,我不知道如何在Scala中实现这一目标。
scala ×4
java ×3
android ×2
apache-spark ×2
eclipse ×2
libgdx ×2
r ×2
3d ×1
actor ×1
akka ×1
c ×1
covariance ×1
data.table ×1
disk ×1
giraph ×1
hadoop ×1
io ×1
join ×1
mapreduce ×1
matplotlib ×1
monitoring ×1
python ×1
queue ×1
websocket ×1