在使用Spark读取csv文件时,文件中数据存在换行符,导致读出的数据非一行完整的数据,可使用spark中option参数解决
import org.apache.spark.sql.SparkSession
object TestFor {
def main(args: Array[String]): Unit = {
val session = SparkSession.builder().master("local[*]").appName(" ").getOrCreate()
import session.implicits._
val frame = session.read.option("header", "true")
.option("inferSchema", "true")
.option("multiLine", true)
.format("csv")
.load("C:\\Users\\admin\\Desktop\\已用文档\\20211221\\数据质量问题跟踪.csv")
frame.map(_.mkString.replaceAll("[\b\r\n\t]*", "")).show(10)
}
}
inferSchema:spark读取csv的时候,如果inferSchema开启,spark只会输入一行数据,推测它的表结构类型,避免遍历一次所有的数,禁用inferSchema参数的时候,或者直接指定schema
multiLine:默认是false,解析一条记录,该记录可能跨越多行
若读出的数据存在乱码,确认文件格式~encoding:默认是uft-8通过给定的编码类型进行解码