Поддерживает ли Spark доступ к данным с главного или рабочего узла?

Можно ли создать RDD, используя данные мастера или работника? Я знаю, что есть опция SC.textFile(), которая получает данные из локальной системы (драйвера). Точно так же мы можем использовать что-то вроде «master:file://input.txt»? потому что я получаю доступ к удаленному кластеру, а размер моих входных данных велик и я не могу войти в удаленный кластер.

Я не ищу S3 или HDFS. Пожалуйста, предложите, если есть какой-либо другой вариант.


person gsuresh92    schedule 02.10.2015    source источник
comment
Какой менеджер кластера вы используете?   -  person WoodChopper    schedule 02.10.2015


Ответы (3)


Данные в RDD всегда контролируются рабочими, независимо от того, находятся ли они в памяти или в источнике данных. Чтобы получить данные из Workers в Driver, вы можете вызвать collect() на вашем RDD.

Вы должны поместить свой файл в HDFS или файловую систему, доступную для всех узлов.

person Patrick McGloin    schedule 02.10.2015

Лучший способ сделать это, как вы сказали, использовать sc.textFile. Для этого вам нужно сделать файл доступным на всех узлах кластера. Spark предоставляет простой способ сделать это с помощью опции --files для spark-submit. Просто передайте опцию, а затем путь к файлу, который вам нужно скопировать.

person MawrCoffeePls    schedule 02.10.2015

Вы можете получить доступ к файлу hadoop, создав конфигурацию hadoop.

import org.apache.spark.deploy.SparkHadoopUtil
import java.io.{File, FileInputStream, FileOutputStream, InputStream}

val hadoopConfig = SparkHadoopUtil.get.conf
val fs = org.apache.hadoop.fs.FileSystem.get(new java.net.URI(fileName), hadoopConfig)
val fsPath = new org.apache.hadoop.fs.Path(fileName)

Как только вы получите путь, вы можете копировать, удалять, перемещать или выполнять любые операции.

person Arun Goudar    schedule 07.08.2018