Условие, указанное с помощью условных заголовков HTTP, не выполнено. Блокам данных Azure не удается прочитать файл JSON из хранилища BLOB-объектов

Используемые ресурсы

  • Аналитика журналов Azure
  • Хранилище BLOB-объектов версии 2
  • Задание Azure Databricks

Аналитика журнала записывает данные в учетную запись хранения BLOB-объектов в контейнере с использованием правила экспорта. Databricks имеет один и тот же контейнер, смонтированный и работающий конвейер, который считывает данные каждый час и выполняет преобразования. Конвейер Databricks иногда работает правильно, а иногда выдает следующую ошибку. Я понимаю, что при чтении и записи данных в хранилище BLOB-объектов возникает состояние гонки. Правило экспорта данных Log Analytics не имеет фиксированного порога времени для отправки данных в хранилище. Есть идеи, как справиться с этим состоянием гонки?

Caused by: java.io.IOException: Operation failed: "The condition specified using HTTP conditional header(s) is not met.", 412, GET, https://xxx.dfs.core.windows.net/xx-xxx/WorkspaceResourceId%3D/subscriptions/xxx.json?timeout=90, ConditionNotMet, "The condition specified using HTTP conditional header(s) is not met. RequestId:xxx-xxxx-xxxx-xxxx-xxx Time:xxx-04-03T20:11:21.xxxx"
    at shaded.databricks.azurebfs.org.apache.hadoop.fs.azurebfs.services.AbfsInputStream.readRemote(AbfsInputStream.java:673)
    at shaded.databricks.azurebfs.org.apache.hadoop.fs.azurebfs.services.AbfsInputStream.readInternal(AbfsInputStream.java:619)
    at shaded.databricks.azurebfs.org.apache.hadoop.fs.azurebfs.services.AbfsInputStream.readOneBlock(AbfsInputStream.java:409)
    at shaded.databricks.azurebfs.org.apache.hadoop.fs.azurebfs.services.AbfsInputStream.read(AbfsInputStream.java:346)
    at java.io.DataInputStream.read(DataInputStream.java:149)
    at com.databricks.common.filesystem.LokiAbfsInputStream.$anonfun$read$3(LokiABFS.scala:204)
    at scala.runtime.java8.JFunction0$mcI$sp.apply(JFunction0$mcI$sp.java:23)
    at com.databricks.common.filesystem.LokiAbfsInputStream.withExceptionRewrites(LokiABFS.scala:194)

Не могли бы вы предоставить пример кода, который вы использовали для чтения JSON из хранилища BLOB-объектов?

Bhavani 08.04.2024 10:12
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
1
150
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
"The condition specified using HTTP conditional header(s) is not met.", 412, GET, https://xxx.dfs.core.windows.net/xx-xxx/WorkspaceResourceId%3D/subscriptions/xxx.json?timeout=90, ConditionNotMet, "The condition specified using HTTP conditional header(s) is not met."

Согласно этому,

Когда операция write выполняется над большим двоичным объектом, ETag этого большого двоичного объекта сбрасывается, скажем, 0x8CDA1BF0593B660. И прежде чем он будет запущен (со значением ETag 0x8CDA1BF0593B660), большой двоичный объект обновляется другой службой, и его ETag меняется на 0x8CDA1BF0593B661.

Это может быть причиной появления указанной выше ошибки при чтении файла JSON из учетной записи хранения в Databricks. Поведение параллелизма можно настроить в соответствии с документацией библиотеки Hadoop-Azure. Это библиотека, используемая для доступа к ADLS (abfss).

Для получения дополнительной информации вы можете перейти по ссылкам ниже:

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