我试图根据分隔符":|:|:"在spark中拆分数据帧的字符串列
Input:
TEST:|:|:51:|:|:PHT054008056
Run Code Online (Sandbox Code Playgroud)
测试代码:
dataframe1
.withColumn("splitColumn", split(col("testcolumn"), ":|:|:"))
Run Code Online (Sandbox Code Playgroud)
结果:
+------------------------------+
|splitColumn |
+------------------------------+
|[TEST, |, |, 51, |, |, P] |
+------------------------------+
Run Code Online (Sandbox Code Playgroud)
测试代码:
dataframe1
.withColumn("part1", split(col("testcolumn"), ":|:|:").getItem(0))
.withColumn("part2", split(col("testcolumn"), ":|:|:").getItem(3))
.withColumn("part3", split(col("testcolumn"), ":|:|:").getItem(6))
Run Code Online (Sandbox Code Playgroud)
part1和part2正常工作.part3只有2个字符,其余的字符串被截断.
第三部分:
P
Run Code Online (Sandbox Code Playgroud)
我想得到整个part3字符串.任何帮助表示赞赏.
我有一个带有多个单字符分隔符的输入数据如下:
col1data1"col2data1;col3data1"col4data1
col1data2"col2data2;col3data2"col4data2
col1data3"col2data3;col3data3"col4data3
Run Code Online (Sandbox Code Playgroud)
在上面的数据中,["],[;]是我的分隔符.
在sparkSQL中是否有任何方法可以将输入数据(在文件中)直接转换为列名为col1,col2,col3,col4的表