当生成器嵌套在表达式中时,不支持生成器

Generators are not supported when it's nested in expressions

提问人:pradipta basu 提问时间:5/2/2018 最后编辑:Ramesh Maharjanpradipta basu 更新时间:5/2/2018 访问量:10853

问:

在进行字数统计之前,我必须简单地从字符串中删除“.”。它在两个语句中工作正常,但在编写单个语句时给了我以下错误。我是在做傻事吗?还是有改进的余地?

错误:org.apache.spark.sql.AnalysisException:当生成器嵌套在表达式中时,它不受支持,但得到:regexp_replace(explode(split(CAST(value AS STRING), \s+)), [.]*, );

法典:

import org.apache.spark.sql.functions._
val testString = " I am X. X Works for Y."
val testDF = Seq (testString).toDF
val testDF1 = testDF.select(regexp_replace (explode (split($"value".cast("String"), "\\s+")), "[.]*", ""))
testDF1.show
Scala Apache Spark 嵌套 表达式

评论

1赞 Ramesh Maharjan 5/2/2018
explode 函数是一个生成新行的生成器。所以你不能在爆炸上使用函数
0赞 pradipta basu 5/2/2018
得到你的解决方案。谢谢。
0赞 pradipta basu 5/2/2018
但文档说: def explode(e: Column): Column 为给定数组或映射列中的每个元素创建一个新行。
0赞 Ramesh Maharjan 5/2/2018
你可以阅读我之前的评论第一行
0赞 pradipta basu 5/2/2018
谢谢。现在清楚了。祝一切顺利。

答: 暂无答案