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

时间:2016-03-15 09:47:00

标签: scala apache-spark hive delimiter spark-csv

非常新的火花和蜂巢和大数据和scala等等。我试图编写一个简单的函数,它接受一个sqlContext,从s3加载一个csv文件并返回一个DataFrame。问题是这个特定的csv使用^ A(即\ 001)字符作为分隔符,数据集很大,所以我不能只做一个" s / \ 001 /,/ g"在上面。此外,这些字段可能包含逗号或其他可能用作分隔符的字符。

我知道我使用的spark-csv软件包有一个分隔符选项,但我不知道如何设置它以便它将\ 001作为一个字符读取而不是像转义0,0和1.也许我应该使用hiveContext或其他东西?

2 个答案:

答案 0 :(得分:19)

如果你检查GitHub页面,spark-csv有一个delimiter参数(你也注意到了)。 像这样使用它:

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")

答案 1 :(得分:0)

对于Spark 2.x和CSV API,请使用sep选项:

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