擅长:python、mysql、java
<p>您的代码没有什么特别的错误,除了非常广泛的数据:</p>
<pre><code>for column in list_of_column_names:
df = df.withColumn(...)
</code></pre>
<p>只生成执行计划。在</p>
<p>一旦结果被评估,实际的数据处理将并行化。在</p>
<p>然而,这是一个昂贵的过程,因为它需要<em>O(NMK)</em>操作,列表中有N行、<em>M</em>列和<em>K</em>值。在</p>
<p>此外,在非常宽的数据上执行计划的计算成本非常高(尽管在记录数量方面成本是不变的)。如果它成为一个限制因素,最好使用<code>RDDs</code>:</p>
<ul>
<li>{column}使用<cd2}函数排序。在</li>
<li>将数据转换为<code>RDD</code>。在</li>
<li>使用二进制搜索对每个列应用搜索。在</li>
</ul>