我正在尝试使用spark 1.6读取CSV文件
s.no|Name$id|designation|salry
1 |abc$12 |xxx |yyyval df = spark.read.format("csv")
.option("header","true")
.option("delimiter","|")
.load("path")如果我添加了带有$ it抛出错误的分隔符,则允许一个分隔符
发布于 2020-04-06 19:27:17
在使用主分隔符(为了更好地理解,我引用"|“作为主分隔符)从源中读取数据帧之后,您可以应用操作。
您可以执行如下操作:
sc是Sparksession
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尽管这可能会导致数据被错误地拆分,因为数据中存在有效的"$“符号,而该符号被错误地视为分隔符。因此,您应该在这些情况下使用预防措施。
有一个库,不记得它的名字,但它可以是单一的,这让你可以选择将多个符号作为单个分隔符,比如#@作为分隔符。如果您的用例是为每一列使用多个分隔符,您可以稍微搜索一下。
https://stackoverflow.com/questions/61057630
复制相似问题