如何解析使用^a(即.\001)作为分隔符的csv?

xlpyo6sf  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(1433)

对spark、hive、大数据和scala等都非常陌生。我正在尝试编写一个简单的函数,它接受一个sqlcontext,从s3加载一个csv文件并返回一个dataframe。问题是,这个特殊的csv使用^a(即.\001)字符作为分隔符,而且数据集很大,所以我不能对它执行“s/\001/,/g”。此外,字段可能包含逗号或其他我可能用作分隔符的字符。
我知道我正在使用的spark csv包有一个分隔符选项,但是我不知道如何设置它,以便它将\001作为一个字符而不是像转义的0、0和1那样读取。也许我应该用hivecontext什么的?

zc0qhyus

zc0qhyus1#

对于spark 2.x和csv api,使用 sep 选项:

val df = spark.read
  .option("sep", "\u0001")
  .csv("path_to_csv_files")
mutmk8jj

mutmk8jj2#

如果您查看github页面,就会发现 delimiter spark csv的参数(如您所述)。像这样使用:

val df = sqlContext.read
    .format("com.databricks.spark.csv")
    .option("header", "true") // Use first line of all files as header
    .option("inferSchema", "true") // Automatically infer data types
    .option("delimiter", "\u0001")
    .load("cars.csv")

相关问题