Как мы можем изменить (a1 | a2 | a3 b1 | b2 | b3) на ((a1, a2, a3), (b1, b2, b3)) в Spark scala - PullRequest
0 голосов
/ 29 мая 2020

Преобразуйте (a1 | a2 | a3 b1 | b2 | b3) в ((a1, a2, a3), (b1, b2, b3)) в искре scala.

1 Ответ

0 голосов
/ 29 мая 2020
  1. Разделите вашу строку, чтобы сформировать Seq
  2. Convert Seq to DataFrame
  3. Добавьте строку с соответствующим префиксом ( и постфиксом )
  4. Строка карты => Строка
  5. Собрать фрейм данных в виде списка
  6. Объединить список с , и префиксом ( и постфиксом )
import org.apache.spark.sql.functions._

object ParseAString {

  def main(args: Array[String]): Unit = {
    val spark = Constant.getSparkSess
    import spark.implicits._
    val inputStr = "a1|a2|a3 b1|b2|b3".split(" ").toSeq.toDF

    val result = inputStr
      .select( concat(lit("("),regexp_replace($"value","\\|",","),lit(")") ) )
      .map(row => {
        row.getString(0)
      })
      .collect().mkString(",")
    println(s"(${result})")

  }

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...