Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如果一列是另一列的成员,如何筛选Spark dataframe_Scala_Apache Spark_Dataframe_Apache Spark Sql - Fatal编程技术网

Scala 如果一列是另一列的成员,如何筛选Spark dataframe

Scala 如果一列是另一列的成员,如何筛选Spark dataframe,scala,apache-spark,dataframe,apache-spark-sql,Scala,Apache Spark,Dataframe,Apache Spark Sql,我有一个包含两列(一个字符串和一个字符串数组)的数据帧: 根目录 |--用户:字符串(nullable=true) |--用户:数组(nullable=true) ||--元素:字符串(containsnall=true) 如何过滤数据框,使结果数据框只包含user在users中的行?当然,这是可能的,也不是那么困难。要实现这一点,您可以使用UDF import org.apache.spark.sql.functions_ 导入org.apache.spark.sql.types_ val

我有一个包含两列(一个字符串和一个字符串数组)的数据帧:

根目录
|--用户:字符串(nullable=true)
|--用户:数组(nullable=true)
||--元素:字符串(containsnall=true)

如何过滤数据框,使结果数据框只包含
user
users
中的行?

当然,这是可能的,也不是那么困难。要实现这一点,您可以使用
UDF

import org.apache.spark.sql.functions_
导入org.apache.spark.sql.types_
val df=sc.parallelize(数组(
(“1”,数组(“1”、“2”、“3”),
(“2”,数组(“1”、“2”、“2”、“3”),
(“3”,数组(“1”,“2”))
)).toDF(“用户”、“用户”)
val inArray=udf((id:String,数组:scala.collection.mutable.WrappedArray[String])=>array.contains(id),BooleanType)
df.where(inArray($“user”,$“users”)).show()
输出为:

+----+------------+
|user|       users|
+----+------------+
|   1|   [1, 2, 3]|
|   2|[1, 2, 2, 3]|
+----+------------+
快速简单:

import org.apache.spark.sql.functions.expr

df.where(expr("array_contains(users, user)")

谢谢这两个和被接受的一个工作,但我只能接受一个作为答案。