基于两个条件spark和Java的过滤器列

时间:2018-08-01 00:27:21

标签: java apache-spark-sql

由于某种原因,我试图在数据框上添加过滤器。 condition在Java中不起作用,它在Scala中完美地工作。该代码甚至无法编译。我们如何使用|| Java中过滤条件的运算符

消息说

The operator || is undefined for the argument type(s) org.apache.spark.sql.Column, org.apache.spark.sql.Column

df.filter((df.col("eventNumbers").contains("2") )|| (df.col("eventNumbers").contains("45")))

2 个答案:

答案 0 :(得分:0)

首先,您必须:

import static org.apache.spark.sql.functions.*;

Java中的scala代码为:

df.filter((df.col("eventNumbers").contains("2") ).or(df.col("eventNumbers").contains("45")))

答案 1 :(得分:0)

在Java 8中,您可以使用字符串conditionExpr进行过滤。

Dataset<Row> df = spark.sqlContext().read()
    .option("multiLine", true)
    .json(dnsRecordFile)
    .filter("type=='A'")  // <--- filter by ConditionExpr Str
    .select("name", "value");