как мы можем читать локальные файлы в иске, используя pyspark или scala? [Дубликат]

Короткий ответ: вам нужно выполнить обратный вызов следующим образом:

function callback(response) {
    // Here you can do what ever you want with the response object.
    console.log(response);
}

$.ajax({
    url: "...",
    success: callback
});
73
задан gonbe 11 December 2014 в 06:15
поделиться

12 ответов

Попробуйте явно указать sc.textFile("file:///path to the file/"). Ошибка возникает при настройке среды Hadoop.

SparkContext.textFile внутренне вызывает org.apache.hadoop.mapred.FileInputFormat.getSplits, который, в свою очередь, использует org.apache.hadoop.fs.getDefaultUri, если схема отсутствует. Этот метод считывает параметр fs.defaultFS в Hadoop conf. Если вы задаете переменную среды HADOOP_CONF_DIR, параметр обычно устанавливается как «hdfs: // ...»; иначе "file: //".

139
ответ дан gonbe 28 August 2018 в 03:35
поделиться

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

Некоторые сетевые файловые системы, такие как NFS, AFS и NFS-уровень MapR, отображаются пользователю как обычная файловая система.

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

 rdd = sc.textFile("file:///path/to/file")

Если ваш файл еще не на всех узлах кластера, вы можете загрузить его локально в драйвере без прохождения Spark, а затем вызвать распараллеливание для распространения содержимое для рабочих

Постарайтесь поместить файл: // спереди и использование «/» или «\» в соответствии с ОС.

5
ответ дан Aklank Jain 28 August 2018 в 03:35
поделиться

Это случилось со мной с Spark 2.3 с Hadoop, также установленным под общим домашним каталогом пользователя «hadoop». Поскольку оба Spark и Hadoop были установлены под одним и тем же общим каталогом, Spark по умолчанию рассматривает схему как hdfs и начинает поиск входных файлов в hdfs, как указано в fs.defaultFS в Hadoop core-site.xml. В таких случаях нам нужно явно указать схему как file:///<absoloute path to file>.

1
ответ дан Binita Bharati 28 August 2018 в 03:35
поделиться

У меня есть файл под названием NewsArticle.txt на моем рабочем столе.

В Spark я набрал:

val textFile= sc.textFile(“file:///C:/Users/582767/Desktop/NewsArticle.txt”)

Мне нужно было изменить все символы \ to / для пути к файлу.

Чтобы проверить, работает ли это, я набрал:

textFile.foreach(println)

Я запускаю Windows 7, и у меня нет Hadoop.

6
ответ дан Gene 28 August 2018 в 03:35
поделиться

Если файл находится в главном узле Spark (например, в случае использования AWS EMR), сначала запустите искровую оболочку в локальном режиме.

$ spark-shell --master=local
scala> val df = spark.read.json("file:///usr/lib/spark/examples/src/main/resources/people.json")
df: org.apache.spark.sql.DataFrame = [age: bigint, name: string]

scala> df.show()
+----+-------+
| age|   name|
+----+-------+
|null|Michael|
|  30|   Andy|
|  19| Justin|
+----+-------+

В качестве альтернативы вы можете сначала скопируйте файл в HDFS из локальной файловой системы и затем запустите Spark в режиме по умолчанию (например, YARN в случае использования AWS EMR), чтобы прочитать файл напрямую.

$ hdfs dfs -mkdir -p /hdfs/spark/examples
$ hadoop fs -put /usr/lib/spark/examples/src/main/resources/people.json /hdfs/spark/examples
$ hadoop fs -ls /hdfs/spark/examples
Found 1 items
-rw-r--r--   1 hadoop hadoop         73 2017-05-01 00:49 /hdfs/spark/examples/people.json

$ spark-shell
scala> val df = spark.read.json("/hdfs/spark/examples/people.json")
df: org.apache.spark.sql.DataFrame = [age: bigint, name: string]

scala> df.show()
+----+-------+
| age|   name|
+----+-------+
|null|Michael|
|  30|   Andy|
|  19| Justin|
+----+-------+
3
ответ дан joarderm 28 August 2018 в 03:35
поделиться

Внимание:

Убедитесь, что вы запускаете искру в локальном режиме, когда вы загружаете данные из локального (sc.textFile("file:///path to the file/")), или вы получите ошибку, подобную этой Caused by: java.io.FileNotFoundException: File file:/data/sparkjob/config2.properties does not exist. Исполнители Becasuse, которые работают на разных рабочих, не найдут этот файл в локальном пути.

2
ответ дан Matiji66 28 August 2018 в 03:35
поделиться

Это решение этой ошибки, которое я получал в Spark-кластере, который размещен в Azure в кластере Windows:

Загрузите необработанный файл HVAC.csv, проанализируйте его с помощью функции

data = sc.textFile("wasb:///HdiSamples/SensorSampleData/hvac/HVAC.csv")

Мы используем (wasb: ///), чтобы позволить Hadoop получить доступ к файлу архива блога в блоге, а три слэша - относительная ссылка на папку контейнера запущенного узла.

Например: Если путь к файлу в Проводнике в панели инструментов Spark-кластера:

sflcc1 \ sflccspark1 \ HdiSamples \ SensorSampleData \ hvac

Итак, чтобы описать путь, выполните следующие действия: sflcc1: is имя учетной записи хранилища. sflccspark: имя узла кластера.

Таким образом, мы ссылаемся на текущее имя узла кластера с относительными тремя слэшами.

Надеемся, что это поможет.

0
ответ дан Mostafa 28 August 2018 в 03:35
поделиться

Это обсуждалось в списке рассылок, и, пожалуйста, обратитесь к этой mail .

Вы должны использовать hadoop fs -put <localsrc> ... <dst> скопировать файл в hdfs:

${HADOOP_COMMON_HOME}/bin/hadoop fs -put /path/to/README.md README.md
3
ответ дан Nan Xiao 28 August 2018 в 03:35
поделиться

Вам нужно просто указать путь к файлу как "file: /// directory / file"

example:

val textFile = sc.textFile("file:///usr/local/spark/README.md")
11
ответ дан Prasad Khode 28 August 2018 в 03:35
поделиться

try

val f = sc.textFile("./README.md")
-5
ответ дан Soumya Simanta 28 August 2018 в 03:35
поделиться

Если вы пытаетесь прочитать файл формы HDFS. попытка установки пути в SparkConf

 val conf = new SparkConf().setMaster("local[*]").setAppName("HDFSFileReader")
 conf.set("fs.defaultFS", "hdfs://hostname:9000")
0
ответ дан Viyaan Jhiingade 28 August 2018 в 03:35
поделиться

Ответ gonbe превосходный. Но все же хочу упомянуть, что file:/// = ~/../../, а не $SPARK_HOME. Надеюсь, это может сэкономить время для таких новых блогов, как я.

19
ответ дан zaxliu 28 August 2018 в 03:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: