首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在spark中读取带有多个分隔符的CSV文件

如何在spark中读取带有多个分隔符的CSV文件
EN

Stack Overflow用户
提问于 2020-04-06 18:23:53
回答 2查看 2.1K关注 0票数 1

我正在尝试使用spark 1.6读取CSV文件

代码语言:javascript
运行
复制
s.no|Name$id|designation|salry
1   |abc$12 |xxx        |yyy
代码语言:javascript
运行
复制
val df = spark.read.format("csv")
  .option("header","true")
  .option("delimiter","|")
  .load("path")

如果我添加了带有$ it抛出错误的分隔符,则允许一个分隔符

EN

Stack Overflow用户

发布于 2020-04-06 19:27:17

在使用主分隔符(为了更好地理解,我引用"|“作为主分隔符)从源中读取数据帧之后,您可以应用操作。

您可以执行如下操作:

sc是Sparksession

代码语言:javascript
运行
复制
val inputDF = sc.read.option("inferSchema", "true")
.option("header", "true")
.option("delimiter", "|")
.csv("/path/to/your/file")

val modifiedDF = inputDF
.withColumn("Name", split(inputDF.col("Name$id"), "\\$")(0))
.withColumn("id", split(inputDF.col("Name$id"), "\\$")(1)).drop("Name$id")

modifiedDF.show(false) will give you the required output

尽管这可能会导致数据被错误地拆分,因为数据中存在有效的"$“符号,而该符号被错误地视为分隔符。因此,您应该在这些情况下使用预防措施。

有一个库,不记得它的名字,但它可以是单一的,这让你可以选择将多个符号作为单个分隔符,比如#@作为分隔符。如果您的用例是为每一列使用多个分隔符,您可以稍微搜索一下。

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61057630

复制
相关文章

相似问题

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