gpt4 book ai didi

python - 如何在pyspark中将DataFrame转换回正常的RDD?

转载 作者:IT老高 更新时间:2023-10-28 20:32:18 28 4
gpt4 key购买 nike

我需要使用

(rdd.)partitionBy(npartitions, custom_partitioner)

DataFrame 上不可用的方法。所有 DataFrame 方法仅引用 DataFrame 结果。那么如何从 DataFrame 数据中创建一个 RDD 呢?

注意:这是对 1.2.0 的更改(在 1.3.0 中)。

更新来自@dpangmao 的回答:方法是.rdd。我有兴趣了解 (a) 它是否公开,以及 (b) 对性能有何影响。

嗯(a)是肯定的,(b)——你可以在这里看到有显着的性能影响:必须通过调用 ma​​pPartitions 创建一个新的 RDD:

dataframe.py 中(注意文件名也发生了变化(原为 sql.py):

@property
def rdd(self):
"""
Return the content of the :class:`DataFrame` as an :class:`RDD`
of :class:`Row` s.
"""
if not hasattr(self, '_lazy_rdd'):
jrdd = self._jdf.javaToPython()
rdd = RDD(jrdd, self.sql_ctx._sc, BatchedSerializer(PickleSerializer()))
schema = self.schema

def applySchema(it):
cls = _create_cls(schema)
return itertools.imap(cls, it)

self._lazy_rdd = rdd.mapPartitions(applySchema)

return self._lazy_rdd

最佳答案

像这样使用方法.rdd:

rdd = df.rdd

关于python - 如何在pyspark中将DataFrame转换回正常的RDD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29000514/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com