Загрузка очень большого CSV-файла с помощью Apache Spark - PullRequest
0 голосов
/ 30 апреля 2019

Мне нужно загрузить огромные CSV-файлы с помощью Apache Spark.

До сих пор я загружал разные файлы, используя метод read Apache Spark. Я не столкнулся с какой-либо проблемой. Однако размеры файлов были невелики, они составляли около 100 мегабайт.

Теперь я получил несколько вопросов о масштабируемости, таких как: «Что произойдет, если файл не помещается в память драйвера?»

Как работает метод spark.read? Загружается ли CSV-файл в память драйвера (главного узла)? Буду признателен за любую идею, опыт или документацию.

пример кода:

df = spark.read.format("csv").option("header","true").load("hugecsvfile.csv")

Ответы [ 2 ]

1 голос
/ 01 мая 2019

из примера кода, который вы разместили, кажется, что hugecsvfile.csv уже находится в главном узле.но на диске.

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

spark только переносит данные в память главного узла (не попадает на диск на главном узле)когда вы выполняете действие.

1 голос
/ 30 апреля 2019

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

После этого любое преобразование / действие будет выполнено для фрагмента вашего файла.

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