невозможно копировать / читать локальные файлы с помощью spark, если он работает в режиме кластера. Причина в том, что когда Ooz ie отправляет задание Spark в режиме кластера, необязательно, чтобы YARN выделял тот же узел (локальный узел), что и исполнитель. Предположим, что если у вас ограничено число исполнителей, и он выделяет один и тот же узел, то также невозможно получить доступ к одному и тому же файлу всеми другими исполнителями.
Тогда единственное возможное решение, которое я вижу, - это сохранить все локальные файлы в общем ресурсе. каталог, который будет доступен для всех узлов кластера, после этого вы можете использовать приведенные ниже команды для запуска команды hdfs
, используя scala.
import org.apache.hadoop.fs
import org.apache.hadoop.fs._
val conf = new Configuration()
val fs = path.getFileSystem(conf)
val hdfspath = new Path("hdfs:///user/nikhil/test.csv")
val localpath = new Path("file:///home/cloudera/test/")
fs.copyToLocalFile(hdfspath,localpath)
Пожалуйста, найдите ссылку ниже, чтобы получить помощь в создании ресурса справочник только для справки.
https://www.tecmint.com/how-to-setup-nfs-server-in-linux/