小编Yve*_*rès的帖子

Spark:reduce和reduceByKey之间的语义差异

在Spark的文档中,它说RDDs方法reduce需要一个关联的AND可交换二进制函数.

但是,该方法reduceByKey仅需要关联二进制函数.

sc.textFile("file4kB", 4)
Run Code Online (Sandbox Code Playgroud)

我做了一些测试,显然这是我得到的行为.为何如此区别?为什么reduceByKey确保二进制函数总是以某种顺序应用(以适应缺乏可交换性)何时reduce不?

例如,如果加载一些(小)文本有4个分区(最小):

val r = sc.textFile("file4k", 4)
Run Code Online (Sandbox Code Playgroud)

然后:

r.reduce(_ + _)
Run Code Online (Sandbox Code Playgroud)

返回一个字符串,其中的部分并不总是以相同的顺序,而:

r.map(x => (1,x)).reduceByKey(_ + _).first
Run Code Online (Sandbox Code Playgroud)

始终返回相同的字符串(其中所有内容的顺序与原始文件中的顺序相同).

(我检查过r.glom,文件内容确实分布在4个分区,没有空分区).

reduce scala apache-spark rdd

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

Git:从远程获取特定对象

在工作中,我们必须应对一个非常庞大的git存储库(90Go).尝试在我的本地副本上调整一些东西(我有一个包文件的错误,试图解压缩它),我可能已经删除了一些目标文件.例如:

> git gc

错误:无法读取af9ed8 [:snip:]

致命的:坏树对象af9ed8 [:snip:]

错误:无法运行重新包装

如何从远程存储库中获取特定对象(在这种情况下是具有散列af9ed8的那个...)?

git

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

Rust:通过引用自动传递

Rust教程经常提倡使用

fn my_func(x: &Something)
Run Code Online (Sandbox Code Playgroud)

通过引用传递参数.这使得在调用站点上显然需要明确地获取值参考:

my_func(&my_value).
Run Code Online (Sandbox Code Playgroud)

但我查了一下,可以使用模式匹配中常用的'ref'关键字来做:

fn my_func(ref x: Something)
Run Code Online (Sandbox Code Playgroud)

然后,我可以简单地称之为

my_func(my_value)
Run Code Online (Sandbox Code Playgroud)

在内存方面,这是否像我期望的那样工作,还是在调用myFunc之前将myValue复制到堆栈上,然后获取对副本的引用?

rust

5
推荐指数
3
解决办法
3120
查看次数

Nix:nixpkgs和nixpkgs.pkgs之间的具体区别是什么?

在:

n = import <nixpkgs> {};
Run Code Online (Sandbox Code Playgroud)

n包含一个属性n.pkgs,它似乎也包含所有可用的包.有什么区别,然后之间n和n.pkgs?

它似乎与Nix配置的fixpoint语义和从nixpkgs覆盖一些包的可用性有关,但我无法真正地围绕它并找到明确的区别.

nix

5
推荐指数
1
解决办法
156
查看次数

Haskell:用 Typeable 证明`存在 t。一个 ~ D t`

我有

data D t = ...
data SomeStuff = forall a (Typeable a, ...) => SomeStuff a
Run Code Online (Sandbox Code Playgroud)

在某些时候,我得到了一个 SomeStuff,a我想尝试将其内部转换为D t(任何类型t都可以,我只对这部分感兴趣)。一些(在伪 Haskell 中)看起来像:D

case someStuff of
  SomeStuff (_ :: a) -> case eqT :: Maybe (a :~: (exists t. D t)) of
    Just Refl -> -- proven that `exists t. a ~ D t`
    Nothing -> -- nothing to do here
Run Code Online (Sandbox Code Playgroud)

我一直在摆弄Data.Type.Equality和Type.Reflection(如应用程序等),但我无法让它工作。任何人都有办法做到这一点?

haskell dynamic-typing

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

标签 统计

apache-spark ×1

dynamic-typing ×1

git ×1

haskell ×1

nix ×1

rdd ×1

reduce ×1

rust ×1

scala ×1