An object is hashable if it has a hash value which never changes during its lifetime (it needs a __hash__() method), and can be compared to other objects (it needs an __eq__() method). Hashable objects which compare equal must have the same hash value.
我最近用了partitionby。我所做的是重新构造我的数据,以便我想放在同一分区中的所有数据都有相同的键,而键又是数据中的一个值。我的数据是一个字典列表,我用字典中的键将其转换成元组。最初,partitionby并没有将相同的键保存在同一个分区中。但后来我意识到钥匙是字符串。我把它们转换成int,但问题仍然存在。数字很大。然后我把这些数字映射成小数值,然后就成功了。所以我得到的结论是键必须是小整数。
这里没有简单的答案。所有这些都取决于数据量和可用资源。Too large或分区数太少将降低性能。
Some resources声明分区的数量应该是可用核心数量的两倍左右。另一方面,单个分区通常不应包含超过128MB的数据,单个无序块不能大于2GB(请参见SPARK-6235)。
最后,必须纠正潜在的数据倾斜。如果某些键在数据集中出现过多,则可能会导致资源使用不理想,并可能导致失败。
不,或者至少不是直接的。可以使用
keyBy
方法将RDD转换为所需格式。此外,任何Python对象都可以被视为键值对,只要它实现所需的方法,使其行为类似于长度等于2的Iterable
。见How to determine if object is a valid key-value pair in PySparktuple
是。引用Python glossary:
相关问题 更多 >
编程相关推荐