Spark df.select возвращает неверные столбцы для csv с заголовками - PullRequest
0 голосов
/ 15 января 2019

Я реализую метод buildScan API источника данных Spark v1.

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
---

но df.show внутри buildScan () возвращает правильный столбец.

Я не могу определить, где именно происходит неправильное отображение столбцов.

1 Ответ

0 голосов
/ 15 января 2019

вы должны использовать двойную кавычку в имени столбца как df.select ("D"). show ()

...