首页 > 解决方案 > 以下python代码的scala等价物是什么?

问题描述

men = data.flatMap(lambda x :x['text'].split(" ")) \
.filter(lambda x: len(x.strip()) > 1) \
.filter(lambda x : x[0] == '@') \
.map(lambda x:x.replace('@','')) 

我试过了,但我无法解决。

var men=df.map((df.select("text"))
          .split(" ")).filter(x => (x.strip()).length()>1)
          .filter(x=>x(0)=="@")
          .map(x=>x.replace("@",""))

:35: 错误:值拆分不是 org.apache.spark.sql.DataFrame 的成员

这里 df 是我的 DataFrame, text 是我正在处理的列的名称。

标签: scalaapache-sparkpyspark

解决方案


似乎您的text列中有列,dataframe并且您正在尝试该列中split文本,然后是开头带有@filter符号的单词,最后是带有空字符的 @ 符号replace

如果我的理解是正确的,那么以下可以是 scala 中的等效代码

var men=df.rdd.flatMap(x => x.getAs[String]("text").split(" "))
    .filter(x => x.trim.length > 1)
    .filter(x => x.startsWith("@"))
    .map(x => x.replace("@", ""))

推荐阅读