спарк-орк с конкретными колонками - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть файл orc, при чтении с опцией ниже он читает все столбцы.

val df= spark.read.orc("/some/path/")

df.printSChema
root
 |-- id: string (nullable = true)
 |-- name: string (nullable = true)
 |-- value: string (nullable = true)
 |-- all: string (nullable = true)
 |-- next: string (nullable = true)
 |-- action: string (nullable = true)

но я хочу прочитать только два столбца из этого файла, есть ли способ прочитать только два столбца (id, name) при загрузке файла orc?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Spark имеет ленивое исполнение модели. Таким образом, вы можете выполнять любые преобразования данных в вашем коде без немедленного реального эффекта. Только после действия вызовите Spark и начните выполнять работу. И Spark достаточно умен, чтобы не делать лишней работы. Таким образом, вы можете написать так:

val inDF: DataFrame = spark.read.orc("/some/path/")   

import spark.implicits._
val filteredDF: DataFrame = inDF.select($"id", $"name")

// any additional transformations  

// real work starts after this action 
val result: Array[Row] = filteredDF.collect()
0 голосов
/ 15 ноября 2018

есть ли способ прочитать только два столбца (id, name) при загрузке файла orc?

Да, все, что вам нужно, это последующий выбор. Spark позаботится обо всем остальном:

val df = spark.read.orc("/some/path/").select("id", "name")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...