我从这段代码中得到了这个例外:
class Transaction:
def __init__ (self):
self.materials = {}
def add_material (self, m):
self.materials[m.type + m.purity] = m
def serialize (self):
ser_str = 'transaction_start\n'
for k, m in self.materials:
ser_str += m.serialize ()
sert += 'transaction_end\n'
return ser_str
Run Code Online (Sandbox Code Playgroud)
该for行是抛出异常的行.该ms为Material对象.有人有什么想法吗?
我正在阅读许多图像,我想研究其中的一小部分以进行显影。结果,我试图了解spark和python如何实现这一目标:
In [1]: d = sqlContext.read.parquet('foo')
In [2]: d.map(lambda x: x.photo_id).first()
Out[2]: u'28605'
In [3]: d.limit(1).map(lambda x: x.photo_id)
Out[3]: PythonRDD[31] at RDD at PythonRDD.scala:43
In [4]: d.limit(1).map(lambda x: x.photo_id).first()
// still running...
Run Code Online (Sandbox Code Playgroud)
..那么怎么回事?我希望limit()的运行速度比我们的运行速度快得多[2],但事实并非如此*。
下面,我将描述我的理解,并请纠正我,因为显然我缺少了一些东西:
d 是成对的RDD(我从模式中知道),我是在用map函数说的:
i)取每一对(将被命名x并给我photo_id属性)。
ii)这将导致一个新的(匿名)RDD,我们将在其中应用该first()方法,但我不确定该方法的工作方式$,但应该给我该匿名RDD的第一个元素。
在中[3],我们将dRDD 限制为1,这意味着尽管d元素很多,但仅使用1并将map函数仅应用于该元素。本Out [3]应该是由映射创建的RDD。
[4],我希望遵循的逻辑[3]并只打印有限的RDD的唯一元素...不出所料,在查看监视器后,[4]似乎处理了整个数据集,而其他数据集则没有,因此看来我使用的不limit()正确,或者这不是我要寻找的内容:
编辑: …
我已经阅读了十几页文档,似乎:
我可以跳过学习scala部分
API完全在python中实现(我不需要学习任何东西的scala)
交互模式与scala shell完全一样快,并且故障排除同样容易
像numpy这样的python模块仍然会导入(没有残缺的python environement)
是否存在使得不可能的空缺区域?