我发现Apache Spark RDD的一个非常奇怪的行为(带有scala 2.11的spark 1.6.0):
当我在RDD上使用subtractByKey时,生成的RDD应该是相等或更小的大小.我得到的是一个在内存中占用更多空间的RDD:
//Initialize first RDD
val rdd1 = sc.parallelize(Array((1,1),(2,2),(3,3))).cache()
//dummy action to cache it => size according to webgui: 184 Bytes
rdd1.first
//Initialize RDD to subtract (empty RDD should result in no change for rdd1)
val rdd2 = sc.parallelize(Array[(Int,Int)]())
//perform subtraction
val rdd3 = rdd1.subtractByKey(rdd2).cache()
//dummy action to cache rdd3 => size according to webgui: 208 Bytes
rdd3.first
Run Code Online (Sandbox Code Playgroud)
我首先意识到这个奇怪的行为是一个~20万行和1.3 GB的RDD,减法后可以扩展到2 GB以上
编辑:尝试使用更多值(10k)=>相同的行为上面的示例.大小增加约1.6倍.另外,reduceByKey似乎也有类似的效果.
当我创建一个RDD时
sc.paralellize(rdd3.collect())
Run Code Online (Sandbox Code Playgroud)
大小与rdd3相同,因此即使从RDD中提取,大小也会增加.
从Ruby 2.4.0开始,已经有一个弃用警告,用于使用已弃用的某些功能.例如Bignum
,Fixnum
,TRUE
,和FALSE
将所有触发废弃警告.虽然我正在修复我的代码,但是有很多代码我希望它能够沉默,特别是在Rails中.我怎样才能做到这一点?
在标准Java API中,是否存在==
将返回true
但equals
将返回的任何方案false
.理论上,这可以写入用户定义的类,而非常像这样
class A {
public boolean equals(Object o) {
return this != o;
}
}
Run Code Online (Sandbox Code Playgroud)
是否有在示例,其中一些对象的任何实际烤b
和c
,b == c
将返回true
,但b.equals(c)
回报false
?此外,有这样的行为会有任何可能的好处吗?
基本上,我有一些像这样的代码:
while True:
number = int(len(oilrigs)) * 49
number += money
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
在这之前,我有一个启动屏幕.然而,由于这是真正的循环,它阻止它运行实际的启动屏幕.相反,它只是显示这个.
那么如何将代码放在后台呢?
我想为 ruby 中的类创建两个一元后缀运算符!
和。到目前为止我已经这样定义了!!
Numeric
class Numeric
def !
(1..self).inject(:*)
end
def !!
if self.even?
(2..self).step(2).inject(:*)
else
(1..self).step(2).inject(:*)
end
end
end
Run Code Online (Sandbox Code Playgroud)
然而,这意味着我必须调用5.!
和5.!!
。我知道您可以定义一元前缀运算符,例如+@
and -@
,但我想知道是否可以定义一个一元后缀运算符,以便我可以调用5!
and5!!
而不是5.!
and 5.!!
。
是否有任何自动化方法来测试代码与 Python 2 和 3 兼容?我看过很多关于如何编写与两者兼容的代码的文档,但没有看到关于自动检查的内容。基本上是一种版本之间兼容性的 linting,而不是语法/样式。
我想过要么使用两个解释器运行测试,要么运行一个类似six
or 的工具2to3
并检查是否没有输出;不幸的是,前者要求您的测试覆盖率达到 100%,而我认为后者要求您拥有有效的 Python 2 代码,并且只会发现与 Python 3 的兼容性问题。
有什么东西可以完成这个任务吗?
Haskell的美元符号是一个很棒的函数,f $ g
例如,f
用其结果g
作为参数进行评估.这可以像这样出色地工作
sin $ sqrt $ abs $ f 2
Run Code Online (Sandbox Code Playgroud)
这相当于
sin(sqrt(abs(f(2))))
Run Code Online (Sandbox Code Playgroud)
美元符号对我很好,因为它更具可读性.我注意到Julia有|>
哪些管道.这似乎f |> g
意味着g
将评估结果f
作为参数.从我注意到的,似乎我可以像这样编写上述表达式
2 |> f |> abs |> sqrt |> sin
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有一些运算符,我可以做我在Haskell中所做的事情.
我使用cxxtest作为我的C++类的测试框架,并想找出一种方法来模拟将数据发送到通常期望从标准输入接收它的类.我有几个不同的文件,我想在不同的测试中发送到类,所以从命令行到测试套件可执行文件的重定向不是一个选项.
基本上,我真正想要做的是找到一种方法来重新定义或重定向'stdin'句柄到我在程序中创建的其他值,然后使用这些测试中的fwrite()以便相应的fread()类内部从程序中提取数据,而不是从与可执行文件关联的实际标准I/O句柄中提取数据.
这甚至可能吗?独立于平台的解决方案的奖励积分,但至少,我需要在Windows下使用Visual Studio 9.
很多ruby的语法和解析都是相对合乎逻辑的,但是我很困惑ruby如何从上下文知道2 /3/ 4
2÷3÷4而不是解析/3/
为正则表达式?这是一个正确的解析,但/3/
也是一个有效的正则表达式,它怎么会知道这/3/
不是一个正则表达式.
我认为这可能是一个数字文字的东西,但如果你这样做
a = 6
b = 4
c = 2
a /b/ c
Run Code Online (Sandbox Code Playgroud)
Ruby仍然将其解析为分裂.这是如何运作的?
实际上,我意识到这个问题还有更多,
让我说我有这个
def a(x)
x
end
a = 4
b = 2
i = 4
a /b/i #=> 0
Run Code Online (Sandbox Code Playgroud)
如何a /b/i
解析的0
,而不是/b/i
在为什么a /b/i
为得到解析a./(b./(i))
,而不是a(/b/i)
?
我目前正在从Angular.JS(1.5)升级到Angular 2+.我$postLink
在一个方法中遇到过IComponentController
,我试图弄清楚Angular 2+中等效的生命周期钩子是什么.
ruby ×3
python ×2
angular ×1
angularjs ×1
apache-spark ×1
c++ ×1
haskell ×1
java ×1
julia ×1
parsing ×1
python-2.7 ×1
python-3.x ×1
rdd ×1
scala ×1
version ×1