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

Я получил 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 активных задач, так как мои предыдущие операции получали сообщения об ошибках. Кроме того, я не уверен, почему "вход" в обоих случаях искры так велик.

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

0 ответов

Другие вопросы по тегам