Regex 如何找到有数字的字符串
我想用spark查找有数字的字符串Regex 如何找到有数字的字符串,regex,apache-spark,hive,Regex,Apache Spark,Hive,我想用spark查找有数字的字符串 Example : String = "abc def ghi2 xyz4" Answer : ghi2 xyz4 输出 +---+---------+ | id| value| +---+---------+ | 0|ghi2 xyz4| | 1| 0d2 234| +---+---------+ 或使用RDD: Seq("abc def ghi2 xyz4","0d2 234 AXZ Mxei").toDF().rdd.map(s=>
Example : String = "abc def ghi2 xyz4"
Answer : ghi2 xyz4
输出
+---+---------+
| id| value|
+---+---------+
| 0|ghi2 xyz4|
| 1| 0d2 234|
+---+---------+
或使用RDD:
Seq("abc def ghi2 xyz4","0d2 234 AXZ Mxei").toDF().rdd.map(s=>s.getString(0).split(" ").filter(s=>s.matches(".*\\d.*")))
rlike
函数添加where子句以检查数字.Map(row=>row.getString(0))
蜂巢还是火花?请选择。您是指字符串中至少有一个数字字符的单词吗?世界上任何地方?或者具体到最后?蓝色幻影:有多少位数还是只有一位数spark@DannyStaple它可以在任何地方,也可以在下面的stringanswer中有更多的数字。你能给出简单的答案吗。这就是Spark的工作原理。@NaveenGupta我添加了RDD解决方案。RDD令人惊讶地非常简短和简单。感谢您为什么使用getString(0)。他到底在做什么。我已经检查过了,但仅仅将df转换为数据集并没有任何区别。
Seq("abc def ghi2 xyz4","0d2 234 AXZ Mxei").toDF().rdd.map(s=>s.getString(0).split(" ").filter(s=>s.matches(".*\\d.*")))
import org.apache.spark.sql.functions._
object CheckDigitInString {
def main(args: Array[String]): Unit = {
val input = "abc def ghi2 xyz4"
val spark = Constant.getSparkSess
import spark.implicits._
val inputDf = input.split(" ").toSeq.toDF
val output = inputDf.where(col("value").rlike(".*[0-9]+.*"))
.map(row => row.getString(0))
.collect().mkString(" ")
println(output)
}
}