Где Spark сохраняет полученные данные в блоках данных Azure? - PullRequest
0 голосов
/ 08 октября 2019

Я бы хотел понять разницу между RAM и storage в блоках данных Azure.

Предположим, я читаю данные CSV из озера данных Azure (ADLS Gen 2) следующим образом:

df = spark.read.csv("path to the csv file").collect()
  1. Я знаю, что метод read в искре - это метод Transformation в искре. И это не будет запущено сразу. Однако теперь, если я выполню Action с использованием метода collect(), я предполагаю, что данные теперь фактически считываются из озера данных Spark и загружаются в RAM или Disk. Во-первых, я хотел бы знать, где хранятся данные. Это в RAM или Disk. И, если данные хранятся в RAM, то для чего используется cache ?;и если данные извлекаются и хранятся в disk, то что же делать при сохранении? Мне известно, что cache сохраняет данные в памяти для позднего использования, и если у меня очень большой объем данных, я могу использовать persist для хранения данных в disk.

  2. Насколько различаются RAM и Disk по размеру?
  3. как я могу узнать, где хранятся данные в любой момент времени?
  4. В какой операционной системе работает Azure Databricks?

Обратите внимание, что я новичокв Azure Databricks and Spark.

Я хотел бы получить некоторые рекомендации относительно лучших практик при использовании Spark.

Ваша помощь очень ценится! *

1 Ответ

1 голос
/ 08 октября 2019

Во-первых, я хотел бы знать, где хранятся данные.

Когда вы запускаете какое-либо действие (например, сбор или другое). Данные собираются с узлов-исполнителей на узел-драйвер и сохраняются в оперативной памяти (памяти)

И, если данныехранится в ОЗУ, а затем, что такое кеш, используемый для

Spark имеет lazy evaluation, что означает, что до тех пор, пока вы не вызовете действие, оно ничего не делает, и как только вы его вызываете, оно создаетDAG, а затем выполнил этот DAF.

Давайте разберемся на примере. давайте рассмотрим, что у вас есть три таблицы Table A, Table B и Table C, вы присоединились к этой таблице и применили некоторую бизнес-логику (карты и фильтры), назовем этот фрейм данных filtered_data. и теперь вы используете DataFrame, скажем, в 5 разных местах (еще один фрейм данных) для поиска или соединения, а также для других деловых целей.

Если вы хотите сохранить свой filterd_data фрейм данных, каждый раз, когда он будет обновляться, он снова будет проходить через объединения и другую бизнес-логику. Поэтому желательно сохранить фрейм данных, если вы собираетесь использовать его в нескольких местах.

По умолчанию Cache хранит данные в памяти (ОЗУ), но вы можете установить уровень хранения на disk

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

Это распределенная среда, так что вам нужно добавить больше исполнителей. и может понадобиться увеличить конфигурацию памяти и процессора,

как я могу узнать, где хранятся данные в любой момент времени?

, если у вас нетсоздал таблицу или представление, он хранится в памяти.

Какая базовая операционная система работает с блоками данных Azure?

она использует linux операционную систему. в частности Linux-4.15.0-1050-azure-x86_64-with-Ubuntu-16.04-xenial

вы можете запустить следующую команду, чтобы узнать.

import platform
println(platform.platform()
...