Spark - 使用引用读取csv文件

时间:2017-07-24 07:29:04

标签: apache-spark

我有一个CSV文件,其中的数据包含在双引号中(")。

  

" 0001"," A"," 001"," 2017/01/01 12"

     

" 0001"," B"," 002"," 2017/01/01 13"

我想只读纯数据(没有"符号)。

spark.read
 .option("encoding", encoding)
 .option("header", header)
 .option("quote", quote)
 .option("sep", sep)

其他选项效果很好,但只有引用似乎无法正常工作。它加载引号(")。如何从加载的数据中删除此符号。

dataframe.show结果

+----+----+------+---------------+
| _c0| _c1|   _c2|             _c3|
+----+----+------+---------------+
|0001| "A"| "001"| "2017/01/01 12"|
|0001| "B"| "002"| "2017/01/01 13"|
+----+----+------+---------------+

2 个答案:

答案 0 :(得分:3)

您可以使用选项引用,如下所示

option("quote", "\"")

如果您的两个数据之间有额外的空间“abc”,“xyz”,则需要使用

option("ignoreLeadingWhiteSpace", true)

希望这有帮助

答案 1 :(得分:2)

我使用databicks api创建了一个示例程序,并在您的数据集上尝试了它

请检查以下代码以阅读csv文件

val df = spark.read.format("com.databricks.spark.csv")
    .option("header", true)
    .option("ignoreLeadingWhiteSpace", true)
    .load("src/test/resources/test")

 df.show()
+-----+------+-----+
|first|second|third|
+-----+------+-----+
|    A|   001|  CCC|
|    B|   002|  DDD|
+-----+------+-----+