AWS Comprehend是AWS提供的一种自然语言处理工具,而PySpark是一种Python编程语言的分布式计算框架。使用这两种工具进行数据分析时,可能会出现F.when函数不起作用的情况。
解决这个问题的方法是在F.when的使用时,需要将结构化查询语言(SQL)中的逻辑转化成Spark SQL的语法规则。下面是一个例子:
from pyspark.sql.functions import when, col
data = [("Alice", 2),("Bob", 1),("Cathy", 3)]
df = spark.createDataFrame(data, ["Name", "Age"])
# F.when not working
df_new = df.select("Name", "Age", when(col("Age") < 2, "Child").when(col("Age") > 2, "Adult").otherwise("Teenager").alias("Category"))
df_new.show()
执行上述代码会出现错误信息,因为当Age等于2时,F.when无法给出适当的结果。
为了解决该问题,我们可以通过使用Spark SQL的语法规则重写查询来避免这种情况。改写后的代码如下所示:
from pyspark.sql.functions import expr
df_new = df.select("Name", "Age", expr("CASE WHEN Age < 2 THEN 'Child' WHEN Age > 2 THEN 'Adult' ELSE 'Teenager' END AS Category"))
df_new.show()
这次执行代码会输出正确的结果,因为我们使用了Spark SQL的语法规则,避免了F.when函数在Age等于2时无法给出适当的结果的问题。