Загрузите файл, используя SparkContext.addFile, и загрузите файл, используя метод load или csv. - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь загрузить Testfile , используя spark и java. Код работает нормально в режиме клиента (на моем локальном компьютере), но он дает FileNotFound Исключение в режиме кластера (т. Е. На сервере).

SparkSession spark = SparkSession
                     .builder()
                     .config("spark.mesos.coarse","true")
                     .config("spark.scheduler.mode","FAIR")
                     .appName("1")
                     .master("local")
                     .getOrCreate();

  spark.sparkContext().addFile("https://mywebsiteurl/TestFile.csv");
  String[] fileServerUrlArray = fileServerUrl.split("/");
  fileName = fileServerUrlArray[fileServerUrlArray.length - 1];
  String file = SparkFiles.get(fileName);
  String modifiedFile="file://"+file;

  spark.read()
       .option("header", "true")
       .load(modifiedFile);   //getting FileNotFoundException in this line

получение исключения FileNotFound.

1 Ответ

0 голосов
/ 18 июня 2019

При работе в кластерном режиме, спарк никогда не будет писать в локальной области драйвера. Наилучшим вариантом будет collect() или используйте toLocalIterator(), если вы можете прочитать файл в буфере. Пожалуйста, попробуйте использовать приведенный ниже код и поделитесь, если он работает для вас?

import org.apache.hadoop.fs._

val conf = new Configuration()
val fs = path.getFileSystem(conf)    
val hdfspath = new Path("hdfs:///user/home/testFile.dat")
val localpath = new Path("file:///user/home/test/")

fs.copyToLocalFile(hdfspath,localpath)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...