Как уже упоминалось в вопросе, если у вас есть данные в формате
152| XXXXXXXXXX XXXXXXXXXX.1001 0503~ADX\|0\|ZZ~NTE\|ADD\|XXXXXXXXXX/~SE\|40\|0060~GE\||
Затем вы должны прочитать их, используя текстовый файл sparkContext и заменить \|
некоторыми другими строками изатем split с |
, преобразование в dataframe
и, наконец, использование функции regexp_replace
для замены преобразованной строки обратно на \|
val rdd = sc.textFile("path to the text file")
.map(line => Row.fromSeq(line.replaceAll("\\\\\\|", "#%#").split("\\|", -1).toSeq))
val schema = StructType(Seq(StructField("col1", StringType, true),StructField("col2", StringType, true),StructField("col3", StringType, true)))
val df = spark.createDataFrame(rdd, schema)
df.withColumn("col2", regexp_replace(col("col2"), "#%#", "\\\\\\|")).show(false)
, что должно дать вам
+----+-----------------------------------------------------------------------------------+----+
|col1|col2 |col3|
+----+-----------------------------------------------------------------------------------+----+
|152 | XXXXXXXXXX XXXXXXXXXX.1001 0503~ADX\|0\|ZZ~NTE\|ADD\|XXXXXXXXXX/~SE\|40\|0060~GE\|| |
+----+-----------------------------------------------------------------------------------+----+
Надеюсь, ответ полезен