에서 특정 문자로 시작하는 줄 나는이처럼 보이는 텍스트 파일을 가져 오기. 이것은 내가 시도한 것입니다 :스파크
val lines = sc.textFile("textfile.txt")
val reg = "^ABC".r
val abc_lines = lines.filter(x => reg.pattern.matcher(x).matches)
abc_lines.count()
카운트가 0을 반환하므로 어디서 잘못 되었습니까?
에서 특정 문자로 시작하는 줄 나는이처럼 보이는 텍스트 파일을 가져 오기. 이것은 내가 시도한 것입니다 :스파크
val lines = sc.textFile("textfile.txt")
val reg = "^ABC".r
val abc_lines = lines.filter(x => reg.pattern.matcher(x).matches)
abc_lines.count()
카운트가 0을 반환하므로 어디서 잘못 되었습니까?
정규식이 필요하지 않습니다. 단지 startsWith 메소드 만 사용할 수 있습니다.
val abc_lines = lines.filter(x => x.startsWith("ABC"))
메서드 일치가 예상 한대로 수행되지 않습니다 (제발, 설명서 참조). 당신이 findFirstIn
방법을 사용할 수 있습니다 Matching against a regular expression in Scala
하지만,이 간단한 경우에는 정규식이 필요하지 않습니다. –
감사합니다.이 또한 도움이됩니다. – Stanko
- 당신은 여기에 더 많은 정보를 찾을 수 있습니다
val list2 = List("ABC", "DEF gibberish", "ABC text", "DEF random")
val lines2: Seq[String] = list.filter(reg.findFirstIn(_).isDefined)
println(lines2.size)
:
당신은 당신이 코드를 사용할 수 있습니다, 대신
val list = List("ABC", "DEF gibberish", "ABC text", "DEF random")
val reg = "^ABC".r
val lines: Seq[String] = list.filter(x => reg.pattern.matcher(x).matches)
println(lines.size)
을 이해하기 위해이 조각을 시도 할 수 있습니다 정규식 다음과 같이
val abc_lines = lines.filter(x => "^ABC".r.findFirstIn(x) == Some("ABC"))
올바른 결과를 제공해야합니다.
는 스파크 당신에게 Task not serializable
오류 메시지를 줄 것이다 다음
val reg = "^ABC".r
val abc_lines = lines.filter(x => reg.findFirstIn(x) == Some("ABC"))
확인 감사로 일을! 하지만 내 코드에 어떤 문제가 있는지 말해 줄 수 있습니까? – Stanko