如何在Dataframe中读取csv文件,在头文件中使用不同的分隔符作为“”,”其余行用“|”分隔

nvbavucw  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(524)

csv文件头用逗号分隔,其余行用另一个分隔符“|”分隔。如何处理这种不同的分隔符情况?请告知。

import org.apache.spark.sql.{DataFrame, SparkSession}
var df1: DataFrame = null
df1=spark.read.option("header", "true").option("delimiter", ",").option("inferSchema", "false")
          .option("ignoreLeadingWhiteSpace", "true") .option("ignoreTrailingWhiteSpace", "true")
.csv("/testing.csv")
df1.show(10)

此命令显示的标题是分开分隔的。但所有数据都显示在第一列中,其余列显示为空值

x33g5p2x

x33g5p2x1#

首先读取csv并拆分列,创建新的dataframe。

df.show

+---------+----+-----+
|       Id|Date|Value|
+---------+----+-----+
|1|2020|30|null| null|
|1|2020|40|null| null|
|2|2020|50|null| null|
|2|2020|40|null| null|
+---------+----+-----+

val cols = df.columns
val index = 0 to cols.size - 1
val expr = index.map(i => col("array")(i))

df.withColumn("array", split($"Id", "\\|"))
  .select(expr: _*).toDF(cols: _*).show

+---+----+-----+
| Id|Date|Value|
+---+----+-----+
|  1|2020|   30|
|  1|2020|   40|
|  2|2020|   50|
|  2|2020|   40|
+---+----+-----+

相关问题