这在火花数据帧(1.6 / 2.1)
中是否可行val data="some variable"
df.filter("column1"> data)
我可以使用静态值执行此操作,但无法弄清楚如何通过变量进行过滤。
答案 0 :(得分:4)
import org.apache.spark.sql.functions._
val data="some variable"
df.filter(col("column1") > lit(data))
答案 1 :(得分:2)
我不确定你是如何用文字完成的,因为你所拥有的并不匹配任何filter
方法签名。
所以是的,你可以使用非文字,但试试这个:
import sparkSession.implicits._
df.filter($"column1" > data)
请注意$
,implicit
使用String
转换将Column
转换为String
以Column
命名的>
。同时,此Any
有Column
方法,该方法需要Any
并返回新的data
。 ISerialPort
将是ICamera
值。
答案 2 :(得分:1)
在Java中,我们可以这样做:
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();
答案 3 :(得分:1)
是的,您可以使用变量来过滤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
答案 4 :(得分:1)
这里是在数字列上使用<
>
=
的过滤器的完整演示,其中mysearchid
是下面声明为val
的数字... >
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|
+-----+
答案 5 :(得分:0)
您只需使用string interpolation
val data="some variable"
df.filter(s"column1 > $data")
答案 6 :(得分:0)
import org.apache.spark.sql.functions._
val portfolio_name = "Product"
spark.sql("""SELECT
*
FROM
Test""").filter($"portfolio_name"===s"$portfolio_name").show(100)
答案 7 :(得分:0)
extension MKAnnotationView {
public func set(image: UIImage, with color : UIColor) {
let view = UIImageView(image: image.withRenderingMode(.alwaysTemplate))
view.tintColor = color
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.isOpaque, 0.0)
guard let graphicsContext = UIGraphicsGetCurrentContext() else { return }
view.layer.render(in: graphicsContext)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.image = image
}
}
如果您想将变量与整个列进行比较,它将起作用