小编Gre*_*ret的帖子

什么是"单点多态",我怎样才能从中受益?

Rick Hickey 在他的简单谈话中谈到了"按照多态性 "(约30:00进入视频).在同一个环境中,他还提到了Haskell的类型类和Clojure的多方法(和协议).

由于我对这些概念不太熟悉,因此我想了解它在实现简单性方面的用处.我对Scala中这个概念的任何示例或展示特别感兴趣.

functional-programming scala typeclass multimethod

67
推荐指数
1
解决办法
4389
查看次数

ggplot的qplot不会在采购时执行

假设我有两个源文件,第一个命名example1.r,第二个example2.r(下面给出).

example1.r

plot(1:10,1:10)
Run Code Online (Sandbox Code Playgroud)

example2.r

qplot(1:10,1:10)
Run Code Online (Sandbox Code Playgroud)

当我获取example1.r时,绘制图形.但是,当我获取example2.r时,它不会.这里有什么解决方案?

(example2.r中的qplotggplot2的函数)

r ggplot2 r-faq

63
推荐指数
1
解决办法
2万
查看次数

IntelliJ Idea sbt托管源文件

我正在使用sbt-buildinfo插件从我的构建定义生成Scala源代码,允许我从我的Scala代码中引用项目名称,版本等.

它通过生成具有以下内容的文件BuiltInfo.scala来完成此操作:

package hello

case object BuildInfo {
  val name = "helloworld"
  val version = "0.1-SNAPSHOT"
  val scalaVersion = "2.10.3"
  val sbtVersion = "0.13.2"
}
Run Code Online (Sandbox Code Playgroud)

target/scala-2.10/src_managed/main/sbt-buildinfo/BuildInfo.scala.

一切都编译,我可以参考那些vals.

但是,IntelliJ Idea不会将BuildInfo.scala识别为托管源文件,因此它会停止向我显示错误.知道怎么做吗?

谢谢!

scala intellij-idea sbt sbt-buildinfo

20
推荐指数
1
解决办法
3570
查看次数

Spark集群在更大的输入上失败,适用于小型

我正在玩Spark.它是来自网站的默认预构建分发版(0.7.0),具有默认配置,群集模式,一个工作者(我的本地主机).我阅读了有关安装的文档,一切似乎都很好.

我有一个CSV文件(各种大小,1000到100万行).如果我使用小输入文件(例如1000行)运行我的应用程序,一切都很好,程序在几秒钟内完成并产生预期的输出.但是当我提供更大的文件(100.000行,或100万行)时,执行失败.我试图挖掘日志,但没有多大帮助(它重复整个过程大约9-10次,然后在失败后退出.此外,还有一些与从某些空源获取失败相关的错误).

第一个JavaRDD返回的结果Iterable对我来说是可疑的.如果我返回一个硬编码的单例列表(如res.add("something");返回res;),一切都很好,即使有一百万行.但是,如果我添加我想要的所有键(28个字符串,长度为6-20个字符),则该过程在输入较大时才会失败.问题是,我需要所有这些密钥,这是实际的业务逻辑.

我正在使用Linux amd64,四核,8GB内存.最新的Oracle Java7 JDK.Spark配置:

SPARK_WORKER_MEMORY=4g
SPARK_MEM=3g
SPARK_CLASSPATH=$SPARK_CLASSPATH:/my/super/application.jar
Run Code Online (Sandbox Code Playgroud)

我必须提一下,当我启动该程序时,它说:

13/05/30 11:41:52 WARN spark.Utils: Your hostname, *** resolves to a loopback address: 127.0.1.1; using 192.168.1.157 instead (on interface eth1)
13/05/30 11:41:52 WARN spark.Utils: Set SPARK_LOCAL_IP if you need to bind to another address
Run Code Online (Sandbox Code Playgroud)

这是我的计划.它基于JavaWordCount示例,最低限度地修改.

public final class JavaWordCount
{
    public static void main(final String[] args) throws Exception
    {
        final JavaSparkContext ctx = new JavaSparkContext(args[0], "JavaWordCount",
            System.getenv("SPARK_HOME"), new String[] {"....jar" });

        final JavaRDD<String> words = ctx.textFile(args[1], …
Run Code Online (Sandbox Code Playgroud)

java cluster-computing real-time-data apache-spark

11
推荐指数
1
解决办法
7158
查看次数

Scala reduceByKey函数 - 使用具有+方法的任何类型

我正在编写一个简单的函数reduceByKey,它接受(键,数字)对的集合并按键返回减少的集合.

  def reduceByKey[K](collection: Traversable[Tuple2[K, Int]]) = {    
    collection
      .groupBy(_._1)
      .map { case (group: K, traversable) => traversable.reduce{(a,b) => (a._1, a._2 + b._2)} }
  }
Run Code Online (Sandbox Code Playgroud)

目前适用于:

scala> val col = List((("some","key"),100), (("some","key"),100), (("some","other","key"),50))
col: List[(Product with Serializable, Int)] = List(((some,key),100), ((some,key),100), ((some,other,key),50))

scala>  reduceByKey(col)      
res42: scala.collection.immutable.Map[Product with Serializable,Int] = Map((some,key) -> 200, (some,other,key) -> 50)
Run Code Online (Sandbox Code Playgroud)

但是,一旦我想使用非Int类型的数字,它就会失败,因为它期望一个Int.

scala> val col = List((("some","key"),100.toDouble), (("some","key"),100.toDouble), (("some","other","key"),50.toDouble))
col: List[(Product with Serializable, Double)] = List(((some,key),100.0), ((some,key),100.0), ((some,other,key),50.0))

scala> reduceByKey(col)
<console>:13: error: type …
Run Code Online (Sandbox Code Playgroud)

scala

8
推荐指数
1
解决办法
1万
查看次数

如何在MATLAB中使用分组和堆叠样式创建条形图?

MATLAB 栏文档说明如下:

bar(...,'style')指定条形的样式.'style'是'分组' '堆叠'.默认显示模式为"分组".

但是,我想同时实现这两个目标.让我举一个例子来详细说明:

Y = [1.0 0.5 0.7
     2.0 1.5 2.0
     5.0 4.0 5.0
     4.0 4.0 4.5
     3.0 2.0 2.0];

bar(Y,'group');
Run Code Online (Sandbox Code Playgroud)

此代码生成以下分组的 bareries图,其中5个不同的3个条组合在一起:

在此输入图像描述

bar([repmat(0.5,5,1) Y(:,1)-0.5],'stack');
Run Code Online (Sandbox Code Playgroud)

并且此代码仅使用上面定义的矩阵的第一列生成以下堆叠条形图Y:

在此输入图像描述

我想合并这两个,以获得一个同时分组和堆叠的条形图.因此,期望的结果将像第一张图片一样,并且一组中的三个条中的每一个将像第二张图片那样堆叠.

matlab graph bar-chart

7
推荐指数
1
解决办法
2万
查看次数

Kinesis Shard GetRecords.IteratorAgeMilliseconds 达到最大值 86.4M(1 天)并且即使消耗也不会减少

  • 我正在使用 Spark Streaming 2.2.0 和spark-streaming-kinesis-asl_2.11使用 Kinesis 流。
  • Kinesis Stream 有 150 个分片,我正在监控GetRecords.IteratorAgeMillisecondsCloudWatch 指标以查看消费者是否跟上流。
  • Kinesis Stream 的默认数据保留时间为 86400 秒(1 天)。
  • 我正在调试一个案例,其中几个 Kinesis Shards 达到最大值GetRecords.IteratorAgeMilliseconds86400000(== 保留期)
  • 这仅适用于某些分片(我们称它们为过时分片),而不是所有分

我已经确定了过时分片的shardIds 。其中之一是shardId-000000000518,我可以在 DynamoDB 表中看到包含以下检查点信息:

leaseKey: shardId-000000000518
checkpoint: 49578988488125109498392734939028905131283484648820187234
checkpointSubSequenceNumber: 0
leaseCounter: 11058
leaseOwner: 10.0.165.44:52af1b14-3ed0-4b04-90b1-94e4d178ed6e    
ownerSwitchesSinceCheckpoint: 37
parentShardId: { "shardId-000000000269" }
Run Code Online (Sandbox Code Playgroud)

我可以在 10.0.165.44 上的工人日志中看到以下内容:

17/11/22 01:04:14 INFO Worker:当前流分片分配:shardId-000000000339, ..., shardId-000000000280, shardId-0000000000518

...这应该意味着shardId-000000000518被分配给这个工人。但是,我从未在此 shardId 的日志中看到任何其他内容。如果工作人员没有从这个 shardId 消费(但它应该),这可以解释为什么GetRecords.IteratorAgeMilliseconds永远不会减少。对于其他一些(非过时的 shardIds …

apache-spark amazon-kinesis spark-streaming amazon-kcl

5
推荐指数
0
解决办法
550
查看次数

如何控制函数在MATLAB中的运行位置?

我希望能够从定义它的目录运行一个函数.假设这是我的文件夹结构:

./matlab
./matlab/functions1
./matlab/functions2
Run Code Online (Sandbox Code Playgroud)

我在MATLAB路径中有所有目录,所以我可以调用这些目录中的函数.

假设我的函数"func"位于'matlab/functions1'中.我的函数包含命令

csvwrite('data.csv', data(:));
Run Code Online (Sandbox Code Playgroud)

现在,如果我从./matlab调用"func",则会在./matlab中创建"data.csv".如果我从./matlab/functions2调用它,它将在该目录中创建.但我想函数总是在定义函数的目录(./matlab/functions1)中编写'data.csv',无论我当前的目录是什么.我怎样才能做到这一点?

matlab

4
推荐指数
1
解决办法
256
查看次数

R编辑器中的标签大小

我想知道是否可以在R编辑器中定义选项卡大小吗?我知道我可以使用其他一些文本编辑器,但我更喜欢R编辑器,因为它内置了对执行行或选择的支持。

r

2
推荐指数
1
解决办法
1329
查看次数

xts的每小时端点和夏令时

我有一个不规则的时间序列,并使用我XTSendpoints让我的时间序列的每小时指标.

endpoints(data, on="hours")
Run Code Online (Sandbox Code Playgroud)

我正在使用这个以每小时计算这种方式

period.apply(data, INDEX=endpoints(data, on="hours"), FUN=mean)
Run Code Online (Sandbox Code Playgroud)

然而,问题是函数endpoints返回两个连续的索引(因此在同一小时内).

> endpoints(data, on="hours")[7201:7220]
[1] 87077 87078 87089 87101 87113 87125 87137 87149 87162 87175 87187 87199 87211 87223 87235 87247 87259 87271 87283 87295
Run Code Online (Sandbox Code Playgroud)

如果我们看看他们代表的日期时间:

data[endpoints(data, on="hours")[7201:7220]]
Run Code Online (Sandbox Code Playgroud)

我们注意到这些是

> data[endpoints(data, on="hours")[7201:7220]]
                 jstimestamp X61757 X61754 X61760 X61753 X61758 X61762 X61756 X61759 X61761 X61755 X61752
2007-10-28 01:55:00 1.193529e+12  938.7 1339.6  450.8  799.4  850.0 1653.6  622.3  159.6 4415.4  681.6 1421.0
2007-10-28 02:00:00 1.193530e+12  946.0 1326.3  437.8  799.9  829.3 …
Run Code Online (Sandbox Code Playgroud)

r xts

2
推荐指数
1
解决办法
583
查看次数