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

时间:2016-03-16 07:16:15

标签: apache-spark apache-spark-sql

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

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

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

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

1 个答案:

答案 0 :(得分:5)

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

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)

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

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