使用 Scala 处理 csv 文件中字段内的定界符
Processing delimiter within a field in a csv file using Scala
我有一个 .csv 文件 |分隔符和以下命令适合我,除了一些在艺术家姓名中包含分隔符的记录
val df_artist = spark.read.format("com.databricks.spark.csv").option("header", "false").option("delimiter", "|").option("mode", "DROPMALFORMED").load("./artists.csv");
普通:
ARVYNKF1272BA83168|TRAGGZG128F92F9B5E|Black Devil Disco Club
不规则:
ARQJXPL1187B9B4D6B|TRWUJAE128F92E3E7D|M|A|R|R|S
ARZCIDG1187B992CE3||Kid Creole | The Coconuts
是否可以忽略定界符,将前两列和剩下的所有内容放在第三列?
我使用 Spark 2.1.1,如果它很重要的话。
我建议使用 sparkContext
textFile
来读取 csv
文件和 split
带有 |
分隔符的行并选择前两个字符串作为前两列,其余为第三列。这个的工作代码是
val data = sc.textFile("./artists.csv")
data.map(line => line.split("\|"))
.map(array => (array(0), array(1), array.drop(2)))
.toDF("rowId", "ticketId", "movies")
.show(false)
给定,输入文件包含的数据为
ARVYNKF1272BA83168|TRAGGZG128F92F9B5E|Black Devil Disco Club
ARQJXPL1187B9B4D6B|TRWUJAE128F92E3E7D|M|A|R|R|S
ARZCIDG1187B992CE3||Kid Creole | The Coconuts
以上代码的输出为
+------------------+------------------+----------------------------+
|rowId |ticketId |movies |
+------------------+------------------+----------------------------+
|ARVYNKF1272BA83168|TRAGGZG128F92F9B5E|[Black Devil Disco Club] |
|ARQJXPL1187B9B4D6B|TRWUJAE128F92E3E7D|[M, A, R, R, S] |
|ARZCIDG1187B992CE3| |[Kid Creole , The Coconuts]|
+------------------+------------------+----------------------------+
我有一个 .csv 文件 |分隔符和以下命令适合我,除了一些在艺术家姓名中包含分隔符的记录
val df_artist = spark.read.format("com.databricks.spark.csv").option("header", "false").option("delimiter", "|").option("mode", "DROPMALFORMED").load("./artists.csv");
普通:
ARVYNKF1272BA83168|TRAGGZG128F92F9B5E|Black Devil Disco Club
不规则:
ARQJXPL1187B9B4D6B|TRWUJAE128F92E3E7D|M|A|R|R|S
ARZCIDG1187B992CE3||Kid Creole | The Coconuts
是否可以忽略定界符,将前两列和剩下的所有内容放在第三列?
我使用 Spark 2.1.1,如果它很重要的话。
我建议使用 sparkContext
textFile
来读取 csv
文件和 split
带有 |
分隔符的行并选择前两个字符串作为前两列,其余为第三列。这个的工作代码是
val data = sc.textFile("./artists.csv")
data.map(line => line.split("\|"))
.map(array => (array(0), array(1), array.drop(2)))
.toDF("rowId", "ticketId", "movies")
.show(false)
给定,输入文件包含的数据为
ARVYNKF1272BA83168|TRAGGZG128F92F9B5E|Black Devil Disco Club
ARQJXPL1187B9B4D6B|TRWUJAE128F92E3E7D|M|A|R|R|S
ARZCIDG1187B992CE3||Kid Creole | The Coconuts
以上代码的输出为
+------------------+------------------+----------------------------+
|rowId |ticketId |movies |
+------------------+------------------+----------------------------+
|ARVYNKF1272BA83168|TRAGGZG128F92F9B5E|[Black Devil Disco Club] |
|ARQJXPL1187B9B4D6B|TRWUJAE128F92E3E7D|[M, A, R, R, S] |
|ARZCIDG1187B992CE3| |[Kid Creole , The Coconuts]|
+------------------+------------------+----------------------------+