#amazon-web-services #amazon-redshift #amazon-redshift-spectrum
Вопрос:
У меня есть таблица в AWS redshift под управлением ra3.xlplus с 2 узлами, в которой 15 миллионов строк. Я получаю данные на месте в офисе. Я пытаюсь загрузить эти данные в память с помощью инструмента BI. Для импорта этих данных через соединение JDBC требуется много времени (12 минут). Также попробовал подключение ODBC, получил тот же результат. Я попытался запустить EC2 с 25-гигабитным подключением на AWS, но получил те же результаты.
Для сравнения, загрузка этих данных в формате CSV занимает около 90 секунд.
Существуют ли какие-либо решения для ускорения передачи данных.
Комментарии:
1. Вы пытаетесь извлечь 15 миллионов строк из облака в локальную среду? Это будет комбинация ограничений пропускной способности плюс протокол извлечения такого количества строк из базы данных. Я предполагаю, что ваш CSV-тест был взят из файла, хранящегося локально, поэтому Интернет не был задействован? Какая пропускная способность у вас есть для Интернета?
2. Я попробовал оба способа: Облако для OnPrem и облако для экземпляра EC2. Скорость загрузки в обоих местах составляет 59-70 Мбит / с. Да, csv на сетевом диске компании, поэтому он находится в интрасети.
Ответ №1:
Есть способы улучшить это, но необходимо определить истинный ограничитель. Вероятным узким местом является пропускная способность сети между AWS и вашей операционной системой. Поскольку вы доставляете большой объем данных из облака, вам понадобится эффективный процесс для этого переноса.
JDBC и ODBC не являются эффективными в сети, как вы видите. Первое, что поможет в перемещении данных, — это сжатие. Второй-параллельная передача, поскольку в протоколе TCP имеется достаточное количество рукопожатий и используется больше пропускной способности, чем может потреблять одно соединение. Итак, как я делал это в прошлом, я ВЫГРУЖАЛ данные, сжатые в S3, затем параллельно копировал файлы из S3 на локальную машину, передавая файлы через распаковку и сохраняя их. Наконец, эти файлы загружаются в ваш инструмент BI.
Очевидно, что для этого требуется некоторое время, поэтому вы хотите быть уверены, что процесс будет использован достаточно, чтобы оправдать эти усилия. Другой способ-приблизить инструмент BI к красному смещению, разместив его в экземпляре ec2. Более короткое сетевое расстояние и более высокая пропускная способность должны значительно сократить время передачи. Недостатком размещения вашей базы данных в облаке является то, что она находится в облаке, а не в режиме ожидания.
Комментарии:
1. Спасибо за предоставление решения S3. Я создал экземпляр EC2 в том же регионе на AWS. Установил инструмент BI, в данном случае его Tibco Spotfire, и попытался импортировать данные. Это заняло примерно столько же времени, сколько и на-прем. Я думаю, что если узкое место находится на стороне красного смещения? Я отслеживал скорость сети как на EC2, так и на-Prem, загружая примерно 59-70 Мбит / с.
2. Я вижу, ec2 был подключен к RS, а не к вашей BI-системе. Итак, сколько времени занимает запрос, если выходные данные отправляются в таблицу? Мы говорим о запросе, который занимает 12 минут? Если запрос выполняется быстро к таблице, как насчет выгрузки в S3? Если с S3 все происходит быстро, то возникают те же проблемы — JDBC неэффективен для данных, несжатых данных и одного подключения к данным.