如何根据列的长度 reduce/filter Spark DataFrame (Java) 中的列?
How to reduce/filter a Column in a Spark DataFrame (Java) based on the length of the Column?
将 Spark 1.5.1 与 spark-cassandra-connector-java 和 Spark SQL DataFrame apis 一起使用,什么是过滤出字符串列的最佳方法小于或大于给定长度?
我正在尝试做这样的事情
DataFrame df = context.sql("select key from mytable where key is not null")
DataFrame fdf = df.filter(functions.length(df.col("key").gt(10))))
functions.length(列)api 是如何工作的?它需要一个 Column in 和 returns 一个 Column,但是长度会发生什么变化?
1) 列是您需要应用谓词的对象。所以改括号
DataFrame fdf = df
.filter(
functions.length(df.col("key"))
.gt(10)
)
这样做是基于列 Key 应用谓词。首先我们把column key改成Length(key)的column。基本上将该函数应用于列中的所有值
[ "bird", "cat", "mouse" ] -> [ 4, 3, 5 ]
然后因为我们现在有一个数字列,所以我们对该列应用大于谓词
[ 4 > 10, 3 > 10, 5 > 10 ] -> [ False, False, False ]
布尔值用于判断谓词是否通过。
2) 为什么不在 sql
中进行检查
sqlContext.sql("SELECT * FROM test.common WHERE LENGTH(key) > 10")
获取key长度大于10的所有值
将 Spark 1.5.1 与 spark-cassandra-connector-java 和 Spark SQL DataFrame apis 一起使用,什么是过滤出字符串列的最佳方法小于或大于给定长度?
我正在尝试做这样的事情
DataFrame df = context.sql("select key from mytable where key is not null")
DataFrame fdf = df.filter(functions.length(df.col("key").gt(10))))
functions.length(列)api 是如何工作的?它需要一个 Column in 和 returns 一个 Column,但是长度会发生什么变化?
1) 列是您需要应用谓词的对象。所以改括号
DataFrame fdf = df
.filter(
functions.length(df.col("key"))
.gt(10)
)
这样做是基于列 Key 应用谓词。首先我们把column key改成Length(key)的column。基本上将该函数应用于列中的所有值
[ "bird", "cat", "mouse" ] -> [ 4, 3, 5 ]
然后因为我们现在有一个数字列,所以我们对该列应用大于谓词
[ 4 > 10, 3 > 10, 5 > 10 ] -> [ False, False, False ]
布尔值用于判断谓词是否通过。
2) 为什么不在 sql
中进行检查sqlContext.sql("SELECT * FROM test.common WHERE LENGTH(key) > 10")
获取key长度大于10的所有值