Spark-sql 是否支持输入数据中的多个分隔符?



我有一个带有多个单字符分隔符的输入数据,如下所示:

col1data1"col2data1;col3data1"col4data1
col1data2"col2data2;col3data2"col4data2
col1data3"col2data3;col3data3"col4data3

在上述数据中,["] ,[;] 是我的分隔符。

sparkSQL中是否有任何方法可以直接将输入数据(在文件中)转换为列名col1,col2,col3,col4的表

答案是否定的,spark-sql 不支持多分隔符,但一种方法是尝试将文件读取到 RDD 中,然后使用常规拆分方法解析它:

val rdd : RDD[String] = ???
val s = rdd.first()
// res1: String = "This is one example. This is another"

假设您想在空格和点分隔符上拆分。

因此,我们可以考虑将函数应用于我们的s值,如下所示:

s.split(" |\.")
// res2: Array[String] = Array(This, is, one, example, "", This, is, another)

现在我们可以在整个rdd上应用该功能:

rdd.map(_.split(" |\."))

数据示例:

scala> val s = "col1data1"col2data1;col3data1"col4data1"
scala> s.split(";|"")
res4: Array[String] = Array(col1data1, col2data1, col3data1, col4data1)

有关字符串拆分的更多信息:

  • 一个 Scala 拆分字符串示例。
  • 如何在 Scala 中拆分字符串,但保持部分与正则表达式匹配?

请记住,您可以应用于常规数据类型的所有内容都可以应用于整个RDD,那么您所要做的就是将RDD转换为DataFrame。

相关内容

  • 没有找到相关文章

最新更新