我有一个带有多个单字符分隔符的输入数据如下:
col1data1"col2data1;col3data1"col4data1
col1data2"col2data2;col3data2"col4data2
col1data3"col2data3;col3data3"col4data3
在上面的数据中,["],[;]是我的分隔符。
sparkSQL 中是否有任何方法可以将输入数据(位于文件中)直接转换为表,列名为col1,col2,col3,col4 < / p>
答案 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。