小编sds*_*sds的帖子

哪些操作保留了RDD顺序?

RDD具有一个有意义的(与存储模型强加的一些随机顺序相反),如果它被处理sortBy(),则如本回复中所解释的那样.

现在,哪些操作保留了该订单?

例如,是否保证(之后a.sortBy())

a.map(f).zip(a) === 
a.map(x => (f(x),x))
Run Code Online (Sandbox Code Playgroud)

怎么样

a.filter(f).map(g) === 
a.map(x => (x,g(x))).filter(f(_._1)).map(_._2)
Run Code Online (Sandbox Code Playgroud)

关于什么

a.filter(f).flatMap(g) === 
a.flatMap(x => g(x).map((x,_))).filter(f(_._1)).map(_._2)
Run Code Online (Sandbox Code Playgroud)

这里"平等" ===被理解为"功能等同",即,没有办法使用用户级操作来区分结果(即,没有读取日志和c).

apache-spark rdd

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

Python赋值解构

这三个表达式似乎是等价的:

a,b,c = line.split()
(a,b,c) = line.split()
[a,b,c] = line.split()
Run Code Online (Sandbox Code Playgroud)

他们编译成相同的代码吗?

哪一个更pythonic?

python destructuring

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

"this"指针只是编译时间吗?

我问自己this指针是否可能被过度使用,因为我通常在每次引用成员变量或函数时都使用它.我想知道它是否会产生性能影响,因为必须有一个指针需要每次都被解除引用.所以我写了一些测试代码

struct A {
    int x;

    A(int X) {
        x = X; /* And a second time with this->x = X; */
    }
};

int main() {
    A a(8);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,即使-O0他们输出完全相同的汇编程序代码.

此外,如果我使用成员函数并在另一个成员函数中调用它,它会显示相同的行为.那么this指针只是编译时间而不是实际指针吗?或者是否存在this实际翻译和解除引用的情况?我使用GCC 4.4.3 btw.

c++ gcc this this-pointer

47
推荐指数
8
解决办法
7519
查看次数

如何创建Python命名空间(argparse.parse_args值)?

为了交互式地测试我的python脚本,我想创建一个Namespace对象,类似于返回的对象argparse.parse_args().显而易见的方式,

>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.parse_args()
Namespace()
>>> parser.parse_args("-a")
usage: [-h]
: error: unrecognized arguments: - a

Process Python exited abnormally with code 2
Run Code Online (Sandbox Code Playgroud)

可能导致Python repl退出(如上所述)一个愚蠢的错误.

那么,使用给定属性集创建Python命名空间的最简单方法是什么?

例如,我可以动态创建dict(dict([("a",1),("b","c")]))但我不能将其用作Namespace:

AttributeError: 'dict' object has no attribute 'a'
Run Code Online (Sandbox Code Playgroud)

python namespaces argparse

43
推荐指数
3
解决办法
3万
查看次数

从命令行检查Parquet

如何从命令行检查Parquet文件的内容?

我现在看到的唯一选择是

$ hadoop fs -get my-path local-file
$ parquet-tools head local-file | less
Run Code Online (Sandbox Code Playgroud)

我想要

  1. 避免创建local-file
  2. 查看文件内容json而不是parquet-tools打印的无类型文本.

有一个简单的方法吗?

parquet

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

精神崩溃:RDD.zip()方法

我刚刚发现了这种RDD.zip()方法,我无法想象它的合同可能是什么.

当然,我明白它的作用.但是,我一直都是这样理解的

  • RDD 中元素顺序是无意义的概念
  • 分区数及其大小是仅供用户进行性能调整的实现细节

换句话说,RDD是(多)集合,而不是序列(当然,例如,Python中的一个AttributeError: 'set' object has no attribute 'zip')

我上面的理解有什么问题?

这种方法背后的理由是什么?

在琐碎的背景之外它是合法的a.map(f).zip(a)吗?

编辑1:

编辑2:回复说:

当您从另一个RDD计算一个RDD时,新RDD中的元素顺序可能与旧RDD中的元素顺序不对应.

这似乎暗示即使是微不足道a.map(f).zip(a)不能保证等同于a.map(x => (f(x),x)).zip()结果可重复的情况是什么?

apache-spark

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

是否可以就地修改data.frame(破坏性地)?

看起来可以将列添加/删除到就地,即不将所有其他列复制到新表.data.table

是否可以用香草做到这一点data.frame

PS.我知道如何"功能性地"添加/删除列,即创建一个新框架而不修改原始框架.

r dataframe data.table

32
推荐指数
1
解决办法
3093
查看次数

git:分支分歧; 如何进行?

我的本地树与主人分道扬:

$ git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 7 and 3 different commit(s) each, respectively.
#
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)

我试过git pull --rebase并且失败了:

$ git pull --rebase
First, rewinding head to replay your work on top of it...
Applying: * ...
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging ChangeLog
CONFLICT (content): Merge conflict in ChangeLog
Failed …
Run Code Online (Sandbox Code Playgroud)

git git-rebase

31
推荐指数
3
解决办法
6万
查看次数

如何告诉函数使用默认参数值?

我有一个函数foo调用math.isclose

import math
def foo(..., rtol=None, atol=None):
    ...
    if math.isclose(x, y, rel_tol=rtol, abs_tol=atol):
        ...
    ...
Run Code Online (Sandbox Code Playgroud)

上述失败的math.isclose,如果我不通过rtol,并atolfoo

TypeError: must be real number, not NoneType
Run Code Online (Sandbox Code Playgroud)

我不想将系统默认参数值放入我的代码中(如果以后改变的话会怎样?)

到目前为止,这是我想到的:

import math
def foo(..., rtol=None, atol=None):
    ...
    tols = {}
    if rtol is not None:
        tols["rel_tol"] = rtol
    if atol is not None:
        tols["abs_tol"] = atol
    if math.isclose(x, y, **tols):
        ...
    ...
Run Code Online (Sandbox Code Playgroud)

这看起来很长,很愚蠢,并且dict在每次调用时都 分配一个foo(递归调用自身,所以这重要)。

那么,告诉math.isclose使用默认公差的最佳方法是什么? …

python python-3.x

29
推荐指数
3
解决办法
1789
查看次数

Python zip 魔法用于类而不是元组

Pythonzip函数(在某种程度上)是它自己的逆函数,因此我们可以这样做:

points = [(1,2), (3,4), (5,6), (7,8)]
xs, ys = zip(*points)
Run Code Online (Sandbox Code Playgroud)

现在xs=[1,3,5,7]ys=[2,4,6,8]

我想知道是否可以使用数据类实例而不是元组来完成类似的操作:

from dataclasses import dataclass

@dataclass
class XY:
    "2d point"
    x: float | int
    y: float | int

points = [XY(1,2), XY(3,4), XY(5,6), XY(7,8)]
xs, ys = zip(*[(p.x,p.y) for p in points])
Run Code Online (Sandbox Code Playgroud)

没有明确列表理解。

当然,结果不会是一个元组,(xs,ys)而是一个带有键的字典xy因为如果没有显式的列表理解,我们将收集 所有字段。

python

25
推荐指数
5
解决办法
1816
查看次数