我正在实现Spark Data Source API v1的buildScan方法。
override def buildScan(requiredColumns: Array[String], filters: Array[Filter]): RDD[Row] =
我正在尝试读取带有标题的.csv文件。
val df = sqlContext.sparkSession.read
.schema(_schema_)
.option("header", "true")
.csv(_array_pf_paths_)
并将其作为rdd返回
df.rdd
架构如下:
root
|-- A: string (nullable = true)
|-- B: string (nullable = true)
|-- C: string (nullable = true)
|-- D: string (nullable = true)
|-- E: string (nullable = true)
|-- F: string (nullable = true)
标题出现在标题位置以及第一行
df.show()
-----------------------
A B C D E F
-----------------------
A B C D E F
a1 b1 c1 d1 e1 f1
a2 b2 c2 d2 e2 f2
a3 b3 c3 d3 e3 f3
a4 b4 c4 d4 e4 f4
a5 b5 c5 d5 e5 f5
------------------------
像我一样返回rdd
df.select(F) or df.select(E)
总是返回第一列。
---
A
---
A
a1
a2
a3
a4
a5
---
,但是buildScan()内部的df.show返回正确的列。
我找不到确切的列映射出问题的地方。
答案 0 :(得分:0)
您必须在列名中使用双引号 像df.select(“ D”)。show()