Spark数据类型不匹配报错:array<string>与string类型对比问题
解决Spark过滤空数组列时的类型不匹配错误
你遇到的错误是因为sellers列是array<string>类型,但你用字符串"[]"去和它做相等比较,两者数据类型不兼容,所以抛出类型不匹配的异常。
给你三种可行的解决方法:
方法一:通过数组长度判断
利用size()函数获取数组长度,判断是否为0:
var sellersDFSelectSellers = sellersDF.select("sellers") sellersDFSelectSellers = sellersDFSelectSellers.filter(size(col("sellers")) === 0)
方法二:匹配空数组对象
用lit()创建一个空的字符串数组,直接和列做相等比较:
import org.apache.spark.sql.functions.lit var sellersDFSelectSellers = sellersDF.select("sellers") sellersDFSelectSellers = sellersDFSelectSellers.filter(col("sellers") === lit(Array.empty[String]))
方法三:使用isEmpty函数(Spark 2.4及以上版本支持)
直接调用数组列的isEmpty()方法判断是否为空:
var sellersDFSelectSellers = sellersDF.select("sellers") sellersDFSelectSellers = sellersDFSelectSellers.filter(col("sellers").isEmpty)
内容的提问来源于stack exchange,提问作者skd
相关产品推荐
相关产品推荐

