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() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |