Хранение файла при чтении в спарк - PullRequest
0 голосов
/ 19 октября 2018

У меня есть файл 30 ТБ в HDFS.Теперь я читаю этот файл в спарк.Но после прочтения файла, где будут храниться эти данные?Предположим:

val customerDF = spark.read.format("csv").load("/path/to/file.csv")

Где будет храниться customerDF?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Исходя из вашего примера, файл еще не будет прочитан, и в этот момент ничего не будет сохранено.Spark ленив, он читает вещи только при вызове таких действий, как: запись, подсчет, сбор и т. Д.Если вы не используете какой-либо вид кэширования фреймов данных (через кеш или сохраняющийся файл), то, что будет прочитано и какая его часть будет использоваться из файла, будет зависеть от следующих операций, вызвавших проекции: select, groupBy, joinи т. д. Если вы используете случайные операции (groupBy, оконные функции, объединения), то спроецированные данные будут записываться в папки tmp на узлах работника / данных для облегчения связи между этапами.

Пример:

val customerDF = spark.read.format("").load("/path") //Files are not read yet
val customerStats = customerDF.groupBy("customer_id").count() //Files are not read yet
customerStats.show(100, false)

В приведенном выше примере файлы доступны только для чтения по команде show, извлекается только customer_id, и из-за подсчета на этапе 1 частичные подсчеты сохраняются в SPARK_LOCAL_DIRS и отправляются на этап 2, который выполняет окончательный анализ и выводится на экран.100 строк.

0 голосов
/ 19 октября 2018

Он не будет храниться где-либо, пока вам не понадобится его обработать, это называется Ленивая оценка .Spark сгенерирует график (DAG) со всеми преобразованиями, которые ему необходимо выполнить, и затем ему нужно будет сохранить кадр данных или выполнить какое-либо действие над ним, он будет загружен в память и обработан.

Вы такжекоманда persist на фрейме данных делает его постоянным, там вы можете выбрать другой StorageLevel

df.persist(cachePolicy)

Подробнее об уровне хранения здесь Уровень хранилищ
enter image description here

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