在Spark DataFrame中(1.6 / 2.1),这种操作是否可能?
val data="some variable"
df.filter("column1"> data)
我可以使用静态值来完成这个操作,但是无法想出如何通过变量进行过滤。
val data="some variable"
df.filter("column1"> data)
我可以使用静态值来完成这个操作,但是无法想出如何通过变量进行过滤。
import org.apache.spark.sql.functions._
val data="some variable"
df.filter(col("column1") > lit(data))
import sparkSession.implicits._
df.filter($"column1" > data)
$
,它使用隐式
转换将String
转换为以该String
命名的Column
。同时,该Column
具有>
方法,接受一个Any
并返回一个新的Column
。那个Any
将是你的data
值。import org.apache.spark.sql.functions._
val portfolio_name = "Product"
spark.sql("""SELECT
*
FROM
Test""").filter($"portfolio_name"===s"$portfolio_name").show(100)
是的,你可以使用变量来过滤Spark Dataframe。
val keyword = "my_key_word"
var keyword = "my_key_word" // if it is a variable
df.filter($"column1".contains(keyword))
df.filter(lower($"column1").contains(keyword)) //if not case sensitive
int i =10;
//for equal condition
df.select("column1","column2").filter(functions.col("column1").equalTo(i)).show();
//for greater than or less than
df.select("no","name").filter(functions.col("no").gt(i)).show();
df.select("no","name").filter(functions.col("no").lt(i)).show();
<
、>
和=
对数字列进行操作。其中mysearchid
是一个在下面声明为val
的数字。请保留HTML标签。scala>val numRows =10
scala>val ds = spark.range(0, numRows)
ds: org.apache.spark.sql.Dataset[Long] = [id: bigint]
scala>val df = ds.toDF("index")
df: org.apache.spark.sql.DataFrame = [index: bigint]
scala>df.show
+-----+
|index|
+-----+
| 0|
| 1|
| 2|
| 3|
| 4|
| 5|
| 6|
| 7|
| 8|
| 9|
+-----+
scala>val mysearchid=9
mysearchid: Int = 9
scala>println("filter with less than ")
filter with less than
scala>df.filter(df("index") < mysearchid).show
+-----+
|index|
+-----+
| 0|
| 1|
| 2|
| 3|
| 4|
| 5|
| 6|
| 7|
| 8|
+-----+
scala> println("filter with greater than ")
filter with greater than
scala> df.filter(df("index") > mysearchid).show
+-----+
|index|
+-----+
+-----+
scala> println("filter with equals ")
filter with equals
scala> df.filter(df("index") === mysearchid).show
+-----+
|index|
+-----+
| 9|
+-----+
val x = "2020-05-01"
df.filter($"column_name"===x).show()
如果你想将一个变量与整个列进行比较,这个方法是可行的。
val data
的例子吗? - himanshuIIITian