在读取数据砖(Scala)中的文本文件时,无法解析u0003类型的分隔符



>我有一个包含消息的文本文件,其中包含多个类型为\u0003,\u0002等的分隔符。我在将数据加载到 Rdd 时使用拆分函数,但无法删除分隔符。当我将分隔符从 \u0003 更改为仅 u0003 时,拆分函数似乎适用于 rdd,但随后我留下了一个额外的 \.。

我看到了一些解决方案,他们提到下面的代码应该可以工作。

val input = sc.textFile("filename.txt").map(_.split("u0003"))
input.collect()

我只是在没有删除分隔符的情况下获取整个字符串

import org.apache.spark.sql.{Row, SparkSession}
import org.apache.spark.sql.types.{DoubleType, StringType, StructField, StructType}
import org.apache.spark.rdd.RDD
input: org.apache.spark.rdd.RDD[Array[String]] = MapPartitionsRDD[4031] at map at command-1662719304326521:7
res24: Array[Array[String]] = Array(Array({"GDSFE001u00031u0003Nu00030u0003Confirm_Shipment_Closedu00035572214u0003Bu0003I7EPM0XV1Z8KBu0003TAG0000u0001u000220190516u00011409u0001GCSSu0001Message Brokeru0001u0001u0001u0001Ou0001u0001u0001Nu0001BKGu0001u0001u0001u000163.0u0002TAGT100u0001HDZKG4XV1Z9KBu0001BNILG4XV1Z9KB.................................

所以我正在尝试其他一些组合,这似乎有效

val input = sc.textFile("/FileStore/tables/IIB_downloaded_test.txt").map(_.split("""\u0003""")) 

以下是两种解决方案:

//For a dataframe or dataset
val dataFrame = spark.read.option("delimiter", """\u0003""").textFile("path")
//For an rdd
val rdd = spark.sparkContext.textFile("path").map(_.split("""\u0003"""))
"\u0003">

不起作用,但需要""\u0003""的原因是双引号转义字符并且读作转义的\u而三个双引号将整个 \u0003 视为分隔符字符串。

相关内容

最新更新