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

Nor*_*sul 8 hive scala delimiter apache-spark spark-csv

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

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

Dan*_*nai 19

如果你检查GitHub页面,有一个delimiterspark-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")
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用pyspark,请使用'\ x01'作为分隔符 (4认同)
  • 那么\ char标记了转义序列的开始,这意味着后面的字符不是字符串的一部分,但具有特殊含义.`u`字符表示以下数字是字符的Unicode代码,0001是该特殊字符的Unicode代码.它的作用是什么,它只是在字符串中插入特殊字符. (2认同)