Некоторые сбои в использовании Rstudio + sparklyr в Watson Studio для манипулирования данными с большим набором данных - PullRequest
0 голосов
/ 07 мая 2018

Я получил Error in curl::curl_fetch_memory(url, handle = handle) : Empty reply from server за некоторые операции в Rstudio (Watson studio), когда пытался манипулировать данными на фреймах данных Spark.

Справка:

Данные хранятся в IBM Cloud Object Storage (COS). Это будет несколько файлов по 10 ГБ, но в настоящее время я тестирую только первый набор (10 ГБ).

Я предполагаю, что в Rstudio (Watson Studio) рабочий процесс подключается к spark (бесплатный план) с помощью sparklyr, считывает файл как кадр данных Spark через sparklyr::spark_read_csv(), а затем применяет к нему преобразование объектов (например, разделяет один столбец). на две части вычислите разницу между двумя столбцами, удалите ненужные столбцы, отфильтруйте ненужные строки и т. д.). После предварительной обработки сохраните очищенные данные обратно в COS через sparklyr::spark_write_csv().

Для работы со Spark я добавил 2 проекта spark в проект (похоже, что любой сервис spark под учетной записью может использоваться Rstudio. Rstudio не ограничен проектом?); Возможно, мне потребуется использовать записные книжки R для исследования данных (чтобы хорошо показать графики), поэтому я создал проект для этой цели. В предыдущих тестах я обнаружил, что для ноутбуков R / Rstudio два env не могут одновременно использовать один и тот же сервис Spark; поэтому я создал 2 службы spark: первый для ноутбуков R (назовем это spark-1) и второй для Rstudio (назовем spark-2).

Поскольку я лично предпочитаю sparklyr (предварительно установленный только в Rstudio), а не SparkR (предварительно установленный только в ноутбуках R), я почти целую неделю занимался разработкой и тестированием кода в Rstudio с использованием spark-2.

Я не очень знаком со Spark, и в настоящее время он ведет себя так, как я не совсем понимаю. Было бы очень полезно, если бы кто-нибудь мог дать предложения по любому вопросу:

1) сбой при загрузке данных (изредка)

До вчерашнего дня она работала достаточно стабильно, так как, когда у меня возникли проблемы с загрузкой данных с использованием точно такого же кода. Ошибка ничего не говорит, но R не может получить данные (Error in curl::curl_fetch_memory(url, handle = handle) : Empty reply from server). Несколько раз я наблюдал, что после того, как я получил эту ошибку, при повторном запуске кода для импорта данных (всего одна строка кода) данные будут успешно загружены.

Скриншот Q1

2) неисполнение (возможно) большого количества преобразований (всегда, независимо от размера данных)

Чтобы проверить, правильно ли преобразованы данные, я распечатал первые несколько строк заинтересованных переменных после каждого шага (большинство из них не являются порядковыми, то есть порядок шагов не имеет значения) преобразования. Я прочитал немного о том, как sparklyr переводит операции. По сути, sparklyr на самом деле не применяет преобразование к данным, пока вы не вызовете предварительный просмотр или не распечатаете некоторые данные после преобразования. После ряда преобразований, если я запустил еще несколько, когда я распечатал первые несколько строк, я получил ошибку (та же бесполезная ошибка, что и в Q1). Я уверен, что код верен, поскольку после выполнения этих дополнительных шагов кода сразу после загрузки данных я могу напечатать и просмотреть первые несколько строк.

3) сбой сбора данных (всегда для первого подмножества)

Собирая данные, я хочу перетащить фрейм данных на локальный компьютер, здесь в Rstudio в Watson Studio. После применения того же набора преобразований я смог собрать очищенную версию образца данных (первоначально 1000 строк x 158 столбцов, около 1000 строк x 90 столбцов после предварительной обработки), но произошел сбой в первом файле подмножества 10 ГБ (первоначально 25 000 000 строк x 158 столбцов, максимум 50 000 строк x 90 столбцов после предварительной обработки). На мой взгляд, занимаемое ею пространство не должно превышать 200 МБ, а это означает, что он должен быть в состоянии считывать данные либо в Spark RAM (1210 МБ), либо в Rstudio RAM. Но это просто не удалось (опять же с этой бесполезной ошибкой).

4) ошибка сохранения данных (всегда, независимо от размера данных)

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

5) сбой при инициализации Spark (найден какой-то шаблон)

Начиная с этого дня, я не могу инициализировать spark-2, который использовался около недели. Я получил то же самое бесполезное сообщение об ошибке. Однако я могу подключиться к spark-1.

Я проверил информацию об экземпляре искры в IBM Cloud:

искровые 2

искровые 1

Странно, что у spark-2 есть 67 активных задач, так как мои предыдущие операции получали сообщения об ошибках. Кроме того, я не уверен, почему «вход» в обоих случаях искры так велик.

Кто-нибудь знает, что случилось и почему это произошло? Спасибо!

...