加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 通过检查值是否在列表中以及其他条件来过滤Spark DataF

发布时间:2020-12-16 09:26:19 所属栏目:安全 来源:网络整理
导读:作为一个简化示例,我尝试使用以下代码过滤Spark DataFrame: val xdf = sqlContext.createDataFrame(Seq( ("A",1),("B",2),("C",3))).toDF("name","cnt")xdf.filter($"cnt" 1 || $"name" isin ("A","B")).show() 然后它错误: org.apache.spark.sql.Analysis
作为一个简化示例,我尝试使用以下代码过滤Spark DataFrame:

val xdf = sqlContext.createDataFrame(Seq(
  ("A",1),("B",2),("C",3)
)).toDF("name","cnt")
xdf.filter($"cnt" >1 || $"name" isin ("A","B")).show()

然后它错误:

org.apache.spark.sql.AnalysisException: cannot resolve '((cnt > 1) || name)' due to data type mismatch: differing types in '((cnt > 1) || name)' (boolean and string).;

什么是正确的方法呢?在我看来它停止在名称列之后阅读.它是解析器中的错误吗?我正在使用spark 1.5.1

解决方法

你必须用括号表示个别表达式:

xdf.filter(($"cnt" > 1) || ($"name" isin ("A","B"))).show()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读