首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将文本文件分割为2列,以多个空格字符作为分隔器,并使用scala spark

如何将文本文件分割为2列,以多个空格字符作为分隔器,并使用scala spark
EN

Stack Overflow用户
提问于 2021-12-31 06:36:11
回答 2查看 591关注 0票数 -3

我很难用分隔符“”(多个空格)将文本文件分割成数据帧列。我加载的数据文件如下所示:

代码语言:javascript
复制
results1.show()

+--------------------+
|                 all|
+--------------------+
|1     hjvh hjk 9 gkk|
|2     yjg vv 87 9bh |
|3     kjn 90j jn kjn|
|4     hb jkbkj j jb |
|....                |
|....                |
|....                |
|9997  jn kjn kjn jkn|
|9998  njkj jn8 98 in|
|9999  nkj kjnkn kjnk|

我想把它分成两列,如下所示:

代码语言:javascript
复制
|     No|          Address |
+-------+------------------|
|      1|    hjvh hjk 9 gkk|  
|      2|    yjg vv 87 9bh |      
|      3|    kjn 90j jn kjn|     
|      4|    hb jkbkj j jb |  
|     ..|             
|     ..|             
|     ..|             
|   9997|    jn kjn kjn jkn| 
|   9998|    njkj jn8 98 in|
|   9999|    nkj kjnkn kjnk|
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-31 08:11:06

您希望在第一次出现space时使用regex对列进行拆分。

有关详细说明,请参阅此answer。区别在于你的分隔符是space (\s)

代码语言:javascript
复制
results1.withColumn("Temp", split($"all", "(?<=^[^\\s]*)\\s"))
.withColumn("No", $"Temp"(0))
.withColumn("Address", $"Temp"(1))
.drop("all","Temp")
.show()

输出

代码语言:javascript
复制
+----+--------------------+
|  No|             Address|
+----+--------------------+
|   1|      hjvh hjk 9 gkk|
|   2|      yjg vv 87 9bh |
|   3|      kjn 90j jn kjn|
|   4|    hb jkbkj j jb...|
|9997|      jn kjn kjn jkn|
|9998|      njkj jn8 98 in|
|9999|      nkj kjnkn kjnk|
+----+--------------------+
票数 2
EN

Stack Overflow用户

发布于 2021-12-31 08:00:30

您可以使用split

代码语言:javascript
复制
df.withColumn('all', f.expr("split(all, '[ ]{2,}')")) \
  .select(f.col('all')[0], f.col('all')[1]) \
  .toDF('No', 'Address').show()

+----+--------------+
|  id|         value|
+----+--------------+
|   1|hjvh hjk 9 gkk|
|   2|yjg vv 87 9bh |
|   3|kjn 90j jn kjn|
|   4|hb jkbkj j jb |
|9997|jn kjn kjn jkn|
|9998|njkj jn8 98 in|
|9999|nkj kjnkn kjnk|
+----+--------------+
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70539643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档