spark 筛选出非布尔类型的数据
时间: 2023-07-05 11:32:56 浏览: 43
假设我们有一个包含不同数据类型的DataFrame,我们可以使用`filter`方法结合`isInstanceOf`函数来筛选出非布尔类型的数据。
例如,我们有如下的DataFrame:
```scala
val df = Seq(
(1, "hello", true),
(2, "world", false),
(3, 123, true),
(4, 3.14, false)
).toDF("id", "value", "flag")
```
我们想要筛选出所有非布尔类型的数据,可以使用以下代码:
```scala
import org.apache.spark.sql.functions._
val nonBooleanDf = df.filter(!col("flag").isInstanceOf[Boolean] && !col("value").isInstanceOf[Boolean])
nonBooleanDf.show()
```
输出结果为:
```
+---+-----+-----+
| id|value| flag|
+---+-----+-----+
| 2|world|false|
| 3| 123| true|
| 4| 3.14|false|
+---+-----+-----+
```
可以看到,我们成功地筛选出了非布尔类型的数据。
相关问题
spark 2.2.0版本 筛选出非布尔类型的数据
可以使用Spark SQL中的`isInstanceOf`函数来判断数据类型,并使用`filter`函数对数据进行筛选。
例如,假设有一个DataFrame对象`df`,其中有一个名为`col`的列,我们希望筛选出其中非布尔类型的数据,可以使用以下代码:
```scala
import org.apache.spark.sql.functions._
val filteredDF = df.filter(!col("col").isInstanceOf[Boolean])
```
这段代码中,`!col("col").isInstanceOf[Boolean]`表示`col`列中非布尔类型的数据,`filter`函数将DataFrame对象`df`中符合该条件的数据筛选出来,存储在`filteredDF`中。
spark 筛选出非字符串类型的数据
假设我们有一个包含不同数据类型的DataFrame,我们可以使用`filter`方法结合`isInstanceOf`函数来筛选出非字符串类型的数据。
例如,我们有如下的DataFrame:
```scala
val df = Seq(
(1, "hello", true),
(2, "world", false),
(3, 123, true),
(4, 3.14, false)
).toDF("id", "value", "flag")
```
我们想要筛选出所有非字符串类型的数据,可以使用以下代码:
```scala
import org.apache.spark.sql.functions._
val nonStringDf = df.filter(!col("value").isInstanceOf[String])
nonStringDf.show()
```
输出结果为:
```
+---+-----+-----+
| id|value| flag|
+---+-----+-----+
| 3| 123| true|
| 4| 3.14|false|
+---+-----+-----+
```
可以看到,我们成功地筛选出了非字符串类型的数据。