Сбои LoadLibrary: Первое случайное исключение 0xC0000139 (DLL, Не Найденный) - Как отладить?

Из документации Hive

hive.support.concurrency

Поддерживает ли Hive параллелизм или нет. Экземпляр ZooKeeper должен быть запущен и работать для того, чтобы менеджер блокировок Hive по умолчанию поддерживал блокировки чтения-записи.

Установите значение true, чтобы поддерживать транзакции INSERT ... VALUES, UPDATE и DELETE (Hive 0.14.0 и более поздние версии). Полный список параметров, необходимых для включения транзакций Hive

 hive.enforce.bucketing

Включена ли принудительная выборка. Если это правда, то при вставке в таблицу применяется принудительное группирование.

hive.exec.dynamic.partition.mode

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

hive.txn.manager

Установите это значение в org.apache.hadoop.hive.ql.lockmgr.DbTxnManager как часть включения транзакций Hive. DummyTxnManager по умолчанию реплицирует поведение до Hive-0.13 и не предоставляет транзакций.

hive.compactor.initiator.on

Нужно ли запускать потоки инициатора и очистителя в этом экземпляре метасторского хранилища. Установите для этого параметра значение true в одном экземпляре метастазовой службы Thrift в рамках включения транзакций Hive. Полный список параметров, необходимых для включения транзакций, см. В hive.txn.manager.

Крайне важно, чтобы это было включено только для одного экземпляра службы метастазов (пока не применяется).

hive.compactor.worker.threads

Сколько рабочих потоков уплотнителя нужно запустить в этом экземпляре метасторского хранилища. Задайте для этого параметра положительное число в одном или нескольких экземплярах метасторской службы Thrift в рамках включения транзакций Hive. Полный список параметров, необходимых для включения транзакций, см. В hive.txn.manager.

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

5
задан PeteVasi 27 April 2009 в 21:37
поделиться

3 ответа

Может ли ваше приложение пытаться вызвать определенную функцию DLL через GetProcAddress после начальной загрузки (возможно), которая не найдена? Это 32 или 64-битное приложение?

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

Быстрый поиск в Google предполагает, что возвращаемый код ошибки, скорее всего, получен из отсутствует имя функции (или порядковое значение конкретной функции) в DLL. Я бы предложил открыть DLL-файл в чем-то вроде Exescope и проверить список экспорта.

3
ответ дан 14 December 2019 в 04:47
поделиться

Использование Process Monitor или FileMon из SysInternals может дать вам подсказку о том, что myTest.dll просто не там, где его ищут.

3
ответ дан 14 December 2019 в 04:47
поделиться

DependencyWalker показывает неявные зависимости (зависимости, которые автоматически обрабатываются загрузчиком Windows). Библиотеки DLL, которые вы загружаете с помощью LoadLibrary, являются явными зависимостями, и DependencyWalker не может их найти (например, имена библиотек могут быть прочитаны из INI-файла, и DependencyWalker не может это сделать).

В этом нет ничего необычного для DLL, чтобы работать в одном приложении, а не в другом. В наиболее распространенном сценарии у одного приложения уже есть требуемая DLL, а у другого - нет. Если dll не на пути, ваша dll будет работать в первом случае, а не во втором.

В любом случае, воспользуйтесь предложением Майкла Барра и используйте FileMon. Несмотря на то, что на веб-сайте SysInternals говорится, что FileMon устарел, его все же намного проще использовать, чем ProcMon.

2
ответ дан 14 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: