擅长:python、mysql、java
<p>对于用户定义函数(UDF),这是一个完美的情况。如果您需要更大的灵活性(例如,从您的输入中创建多个列),那么您可以查看<a href="https://spark.apache.org/docs/1.6.0/api/java/org/apache/spark/ml/Transformer.html" rel="nofollow noreferrer">transformers</a>。在</p>
<p>您的自定义项如下所示:</p>
<pre><code>from pyspark.sql.functions import udf
def colToString(num):
if num >= 0 and num < 0.5: return 'A'
elif num >= 0.5 and num < 0.75: return 'B'
elif num >= 0.75 and num < 1.0: return 'C'
else: return 'D'
myUdf = udf(colToString, StringType())
df.withColumn("col10", myUdf('col9'))
</code></pre>
<p>这里,<code>myUdf</code>接受一个双精度参数并返回一个字符串。从输入列<code>col9</code>读取双精度值。在</p>
<p>关键是使用数据帧操作来执行此操作,而不是Pandas。熊猫不会以分散的方式执行您的操作,而Spark会。在</p>