Spark读取csv:使用" sep"选项卡的选项,但所有内容都出现在一列中

时间:2018-04-17 23:28:59

标签: apache-spark

我试图在spark(scala)中读取制表符分隔文件,如下所示:

spark.read.option("sep", '\t').csv(location)

但架构是这样的:

scala> df.printSchema
root
 |-- _c0: string (nullable = true)


scala> df.show
+------+
|   _c0|
+------+
|3  1   .1|
|3  2   .2|
|3  4   .3|
|2  1   .4|
|2  3   .5|
+------+

我做错了什么?

更新:我认为这与如何在spark中读取TSV文件的一般问题不同,因为传递分隔符而不是字符串的字符参数会破坏任何东西并不明显 - 实际上当我进入代码时,它说它只是在value参数上调用.toString,传递' \ t'相当于传递" \ t"。因为它仍然不知道出了什么问题,但我知道切换到" \ t"固定它。希望能解释这种差异的人可以在某个时刻加入。

1 个答案:

答案 0 :(得分:0)

将制表符作为字符串而不是字符固定它:

scala> val df = spark.read.option("sep", "\t").csv(location)
df: org.apache.spark.sql.DataFrame = [_c0: string, _c1: string ... 1 more field]