我试图在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"固定它。希望能解释这种差异的人可以在某个时刻加入。
答案 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]