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

mon*_*nic 1 apache-spark apache-spark-sql

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

col1data1"col2data1;col3data1"col4data1
col1data2"col2data2;col3data2"col4data2
col1data3"col2data3;col3data3"col4data3
Run Code Online (Sandbox Code Playgroud)

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

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

eli*_*sah 5

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

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

假设你想要分割空间和分数.

所以我们可以考虑将我们的函数应用于我们的s价值如下:

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

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

rdd.map(_.split(" |\\."))
Run Code Online (Sandbox Code Playgroud)

您的数据示例:

scala> val s = "col1data1\"col2data1;col3data1\"col4data1"
scala> s.split(";|\"")
res4: Array[String] = Array(col1data1, col2data1, col3data1, col4data1)
Run Code Online (Sandbox Code Playgroud)

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

请记住,您可以在常规数据类型上应用的所有内容都可以应用于整个RDD,然后您只需将RDD转换为DataFrame即可.