«Руководство по разработке EMR» — часто задаваемые вопросы по Sqoop
«Руководство по разработке EMR» — часто задаваемые вопросы по Sqoop

иллюстрировать

Проблемы и решения, описанные в этой статье, также применимы к эластичность MapReduce(EMR)

фон

Sqoop — это инструмент с открытым исходным кодом для передачи данных между Apache Hadoop и хранилищами структурированных данных, такими как реляционные базы данных. Он позволяет пользователям выполнять операции импорта и экспорта данных между распределенной файловой системой Hadoop (HDFS) и внешними структурированными хранилищами данных. Основное преимущество Sqoop заключается в том, что он может эффективно переносить большие объемы данных из реляционных баз данных в среду Hadoop для анализа и обработки больших данных.

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

Проблема 1: Sqoop не может инициализировать класс дерби

Исключение проблемы:

Язык кода:javascript
копировать
Error:Could not initialize class org.apache.derby.jdbc.AutoloaderDriver40

Поскольку сообщаемая ошибка не может быть определена как класс инициализации, она рассматривается как конфликт пакетов или проблема версии пакета.

Процесс решения:

  1. Перейдите в каталог sqoop lib, чтобы просмотреть соответствующие пакеты и обнаружить, что существует несколько пакетов derby;
  2. Затем мы провели поиск версии пакета derby по всему кластеру;
  3. Потом удалил совок Дополнительные пакеты дерби в библиотеке, Проблема решена.

причина:

Эта ситуация обычно возникает из-за того, что ранее вы сталкивались с проблемами sqoop, связанными с derby, а также случайной загрузкой пакета derby из решения, найденного в Интернете, и помещением его в sqoop lib, что приводит к конфликтам пакетов.

Вопрос 2: sqoop import SQLException в nextKeyvalue

Исключение проблемы:

Язык кода:tex
копировать
Error: java.io.IOException: SQLException in nextKeyvalue

Процесс решения:

  1. Проанализируйте, что тип исключения является проблемой ввода-вывода. Проблемы ввода-вывода обычно являются проблемами данных. Далее проверьте данные об ошибках.
  2. Запись в сообщении об ошибке: java.sql.SQLExceptipn: Value ‘2018-01-20 02:06:24....’
  3. С помощью приведенного выше двухэтапного анализа можно сделать вывод, что проблема заключается в том, что в записи используется неправильный формат даты, который необходимо обновить в MySQL. jdbc urlУкажите параметр в:&zeroDateTimeBehavior=convertToNull
  4. После отправки плана заказчику,Отзывы клиентов Проблема решена.

Вопрос 3. Sqoop автоматически создает таблицу orc при использовании сценария хранения cos.

нуждаться:

  1. Заказчик предполагает использовать sqoop для автоматического создания таблиц в сценарии использования cos для хранения (таблица не существует автоматически);
  2. С другой стороны, клиент ожидает автоматического создания таблиц с помощью Sqoop при использовании хранилища orc;

План освобождения:

Для двух требований демо-версия реализована следующим образом:

Язык кода:bash
копировать
sqoop import --connect jdbc:mysql://172.0.0.1:3306/dy \
--username root --password XXX \
--table test \
--create-hcatalog-table \
--hcatalog-database dy \
--hcatalog-table test_orc \
--hcatalog-storage-stanza "stored as orcfile location 'cosn://sqoop-dy-1258469122/hive/warehouse/test_orc'" \
-m 1

Подробное объяснение параметров:

--create-hcatalog-table: Если таблица орков не существует, она будет создана; --hcatalog-storage-stanza: параметры хранения таблицы orc, формат хранения указан как orc, а путь к хранилищу указан как путь cos.

Примечание: поскольку orcповерхность отличается от обычной hiveповерхности, orcповерхность может использовать только параметр hcatalog.

Вопрос 4. Sqoop недоступен после того, как Hive меняет движок по умолчанию на Tez.

Исключение проблемы:

Язык кода:javascript
копировать
113  [main] ERROR org.apache.sqoop.tool.ImportTool  - Import failed: java.io.IOException: Exception thrown in Hive
at org.apache.sqoop.hive.HiveImport.executeScript(HiveImport.java:358)
at org.apache.sqoop.hive.HiveImport.importTable(HiveImport.java:241)
at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:537)
at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:628)
at org.apache.sqoop.Sqoop.run(Sqoop.java:147)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:234)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:243)
at org.apache.sqoop.Sqoop.main(Sqoop.java:252)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.sqoop.hive.HiveImport.executeScript(HiveImport.java:331)
... 9 more
Caused by: java.lang.NoClassDefFoundError: org/apache/tez/dag/api/TezConfiguration
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:614)
at org.apache.hadoop.hive.ql.session.SessionState.beginStart(SessionState.java:549)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:750)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:686)
... 14 more
Caused by: java.lang.ClassNotFoundException: org.apache.tez.dag.api.TezConfiguration
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 18 more

вопроспричина:

После того как клиент изменил движок Hive по умолчанию на Tez, во время выполнения sqoop произошла ошибка, и он стал недоступен.

Решение:

Добавьте следующую команду после файла /usr/local/service/sqoop/conf/sqoop-env.sh:

Язык кода:javascript
копировать
export TEZ_HOME=/usr/local/service/tez
for jar in `ls $TEZ_HOME |grep jar`; do
   export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_HOME/$jar
done

for jar in `ls $TEZ_HOME/lib`; do
   export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_HOME/lib/$jar
done

Затем создайте мягкую ссылку /usr/local/service/tez/conf/tez-site.xml на /usr/local/service/sqoop/conf:

Язык кода:javascript
копировать
ln -s /usr/local/service/tez/conf/tez-site.xml /usr/local/service/sqoop/conf

Проблема решена.

Примечание: Эти операции можно изменить на машине отправки.

Вопрос 5: проблема с sqoop jackson.databind

Исключение проблемы:

java.lang.NoSuchMethodError:com.fasterxml.jackson.databind.ObjectMapper

Поскольку сообщаемая ошибка не может быть определена как класс инициализации, она рассматривается как конфликт пакетов или проблема версии пакета.

Процесс решения:

  1. Перейдите в каталог sqoop lib, чтобы просмотреть соответствующий пакет и обнаружить, что существует несколько пакетов jackson.databind;
  2. Был проведен комплексный поиск, чтобы выяснить, какая версия пакета jackson используется в кластере;
  3. mv убрал младшую версию пакета Джексона и добавил улей Все пакеты Джексона из библиотеки копируются в sqoop. libВниз,Проблема решена.

Вопрос 6: Sqoop экспортирует искаженные китайские иероглифы

вопросиллюстрировать:

Проблема с китайским искажением возникает, когда Sqoop экспортирует данные в улей

Анализ проблемы

Проблема с искаженным кодом вызвана несогласованным кодированием данных между двумя платформами, проблемами кодирования на платформе удаленного подключения или проблемами кодирования в команде sqoop.

Решение:

1. Укажите формат кодировки в URL-адресе подключения jdbc к MySQL:

Язык кода:bash
копировать
jdbc:mysql://<ip>:3306/<db>?useUnicode=true&characterEncoding=utf-8

2. Другая причина в том, что указан параметр --direct, просто отмените его.

Вопрос 7. Когда рабочий процесс Hue выполняет команду sqoop, он сообщает, что класс не найден.

Исключение проблемы:

Язык кода:javascript
копировать
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.mapreduce.InputFormat

Выполнение консоли может быть успешным, но выполнение рабочего процесса сообщает об ошибке.

Процесс решения:

Идея:

Если выполнение консоли может быть успешным, решение состоит в том, чтобы сначала определить, какой узел не работает, а затем сравнить различия. 1. В org.apache.hadoop.mapreduce.InputFormat отсутствует этот класс. Вы можете найти недостающий пакет:

Язык кода:bash
копировать
/usr/local/service/sqoop/lib/hadoop-mapreduce-client-core-2.8.5.jar

2. Распространите этот пакет Hadoop-mapreduce-client-core-2.8.5.jar непосредственно на все узлы;

3. В это время сообщалось о новой ошибке:

Язык кода:bash
копировать
java.lang.NoClassDefFoundError;java.io.IOException: Cannot initialize Cluster

Эту проблему трудно обнаружить, и она обычно возникает из-за отсутствия большого количества пакетов;

4. а потом консоль может распространять пакеты на узле всем узлам, Проблема решена.

Примечание:

В другой ситуации все узлы не смогут успешно выполниться, и будет сообщено об ошибке.

Язык кода:javascript
копировать
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.mapreduce.InputFormat

Сейчас просто поместите 8 jar-пакетов, начиная с Hadoop-mapreduce-client, по пути /usr/local/service/sqoop/lib/.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose