どのようにリストの番号には、2つの数字のJavaスパークdatafrme間

クマール:

データフレームの入力:

ここでは、画像の説明を入力します。

Requirdデータフレームの出力 ここでは、画像の説明を入力します。

入力ファイルがcoloneを持っている場合、我々はbeetween数の元を見つける必要が1:10 - > 1,2,3,4,5,6,7,8,9,10

それは正規表現とかのうDOです。私はそのために、そのためのいくつかのいずれかの助けを喜ば鮮明な画像を得るいけません

Goutamプラダン:
UDF:
def myudf2=(input:String)=>{
    val regex = "('\\d+':'\\d+')".r
    val out = new ListBuffer[String]()
    input.replaceAll("'", "").split(",").map(x=>{
      if(x.matches("(\\d+:\\d+)")){
        val colon = x.split(":")
        out += (colon(0).toInt to colon(1).toInt).mkString(", ")
      } else {
        out += x
      } 
    })
    out.mkString(",").replaceAll("\\[|\\]", "")
  }

val df = Seq((1,"'1':'5','6','7':'10'"),(2,"'1':'6','7','8':'12'")).toDF("id","number")
scala> df.show
+---+--------------------+
| id|              number|
+---+--------------------+
|  1|'1':'5','6','7':'10'|
|  2|'1':'6','7','8':'12'|
+---+--------------------+
val myCostumeudf = udf(myudf2)
scala> val outDF = df.withColumn("output", myCostumeudf(df("number")))
scala> outDF.show(5,false)
+---+--------------------+---------------------------------------+
|id |number              |output                                 |
+---+--------------------+---------------------------------------+
|1  |'1':'5','6','7':'10'|1, 2, 3, 4, 5, 6, 7, 8, 9, 10          |
|2  |'1':'6','7','8':'12'|1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12  |
+---+--------------------+---------------------------------------+

上記のようなものを試してみてください。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=367311&siteId=1