1

我需要对 Koalas DataFrame 进行元素操作。为此,我使用Koalas applymap方法。在执行时,考拉将所有数据移动到一个分区,然后应用该操作。结果是工作的表现很差。

>>> sdf = spark.range(0, 10**7, 1, 10).toDF('col1').withColumn('col2', F.lit('[1,2]'))

>>> kdf = ks.DataFrame(sdf)

>>> kdf_new = kdf[['col2']].applymap(eval)

WARN window.WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.

如何强制考拉不对数据进行shuffle,将操作应用到现有的partition中?

4

1 回答 1

1

您可以通过在 Koalas DataFrame 上指定索引来解决此问题。预计默认索引会带来较差的性能。阅读Koalas 中的默认索引类型

指定不同的默认索引

ks.options.compute.default_index_type = 'distributed-sequence'

或在 DataFrame 上指定特定索引(即不使用默认值)

kdf = kdf.set_index('col1')
于 2021-05-26T23:41:14.420 回答