scala:选择数据框中不包含元素的列
我有这样一组代码,应该从不包含字符串的列列表中创建一个数据帧。我试过这个,但不起作用:scala:选择数据框中不包含元素的列,scala,apache-spark,hive,apache-spark-sql,Scala,Apache Spark,Hive,Apache Spark Sql,我有这样一组代码,应该从不包含字符串的列列表中创建一个数据帧。我试过这个,但不起作用: val exemple = hiveObj.sql("show tables in database").select("tableName")!==="ABC".collect() 尝试使用筛选方法: import org.apache.spark.sql.functions._ import spark.implicits._ val exemple = hiveObj.sql("your query
val exemple = hiveObj.sql("show tables in database").select("tableName")!==="ABC".collect()
尝试使用筛选方法:
import org.apache.spark.sql.functions._
import spark.implicits._
val exemple = hiveObj.sql("your query here").filter($"columnToFilter" =!= "ABC").show
注:不等式运算符==仅适用于Spark 2.0.0+。如果您使用的是旧版本,则必须使用!==。您可以查看文档
如果需要筛选多个列,可以这样做:
.filter($"columnToFilter" =!= "ABC" and $"columnToFilter2" =!= "ABC")
我的问题的另一个备选答案是:
val exemple1 = hiveObj.sql("show tables in database").filter(!$"tableName".contains("ABC")).show()
filter..org.apache.spark.sql.DataFrame无法应用于数据库中的布尔值val example=hiveObj.sqlshow表。filter$tableName==ABC.show您需要选择一个表。如果我正确理解了您的问题,那么您希望从配置单元表中筛选列。为什么不执行select*from database.tableName?这里的tableName指的是列而不是表OK,我想我知道发生了什么。用于检查两列是否相等的比较运算符为==,而不是==。请记住,您需要导入spark implicits import spark.implicits.\以使用$column选择器。但是如何使大小写相反:not contains