Привет, кто-нибудь работал над выгрузкой данных ханы в улей с помощью pyspark ?? У меня проблемы с памятью для огромных данных. пожалуйста, предложите - PullRequest
0 голосов
/ 05 августа 2020

Кто-нибудь работал над выгрузкой данных ханы в улей с помощью pyspark ?? У меня проблемы с памятью для огромных данных. пожалуйста, предложите. Я пробовал меньший набор данных, он работал. На огромном уровне это дает JDBCDriverException: не может выделить достаточно памяти. Я использую драйвер sapJDB C для подключения

query = select col из таблицы hana

jdbcDF = spark.read.format("jdbc").option("driver", driver).option("url", url).option("dbtable", query).option("user", username).option("password", password).load()

jdbcDF.write.insertInto("hive_test" + """.""" + "hive_ratings_table")

Ответы [ 3 ]

1 голос
/ 06 августа 2020

Хотя информация о размере экземпляра HANA все еще отсутствует, сообщение об ошибке от драйвера HANA JDB C указывает, что действительно HANA не может выделить достаточно памяти.

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

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

«Дампирование данных» особенно интенсивно потребляет память, поскольку HANA должна «материализовать» все записи, что фактически означает распаковку данных. Пока вы обрабатываете данные в HANA, это обычно не требуется.

Это оставляет вам несколько вариантов:

  1. увеличить память сервера
  2. dump / загружать данные партиями
  3. использовать опцию экспорта CSV (команда EXPORT - используется только в том случае, если у вас есть доступ к файловым системам сервера HANA)
  4. выполнять анализ в HANA напрямую и не экспортировать данные вообще.
0 голосов
/ 06 августа 2020

Я использую ниже код pyspark

query = "" "select * from tbalename" "" Для чтения из таблицы HANA jdbcDF = spark.read.format ("jdb c"). Option ( «драйвер», драйвер) .option («url», url) .option («dbtable», query) .option («user», имя пользователя) .option («пароль», пароль) .load ()

Для записи в таблицу Hive jdbcDF.write.insertInto ("hive_test" + "" "." "" + "Hive_ratings_table")

Объем данных составляет 186 миллионов. Для входа в оболочку pyspark я использую исполнителя память 80G, память драйвера 10G, количество исполнителей 5, ядра 5.

0 голосов
/ 06 августа 2020

В сообщении об ошибке eaxct указано com.sap.db.jdb c .JDBCDriver исключение: не удается выделить достаточно памяти. Мой сценарий: мне нужно выгрузить 186 миллионов записей для таблицы с 252 столбцами в таблицу-улей. Я делаю это с помощью кода pyspark. Это не позволяет мне принимать все сразу. Максимально это позволяет всего 13 миллионов.

...