Добавление данных с помощью dagshub.upload.Repo(USER_NAME,REPO_NAM)

Я хочу добавить файл необработанного набора данных в свой репозиторий dagshub (мой первый репозиторий, который используется вместе с учебным пособием по MLflow).

Вот строка, которая доставляет мне неприятности:

repo = dagshub.upload.Repo(USER_NAME,REPO_NAME)

repo.upload(local_path='data/winequality.txt',
            remote_path='data/raw/winequality.txt',
            commit_message='Added Raw Data',
            versioning='dvc')

и это ошибка, которую я получаю:

Uploading files (1) to "USER_NAME/REPO_NAME"...
---------------------------------------------------------------------------
DagsHubAPIError                           Traceback (most recent call last)
<ipython-input-49-e8d1e8493248> in <cell line: 4>()
      2 repo = dagshub.upload.Repo(USER_NAME,REPO_NAME)
      3 
----> 4 repo.upload(local_path='data/winequality.txt',
      5             remote_path='data/raw/winequality.txt',
      6             commit_message='Added Raw Data',

2 frames
/usr/local/lib/python3.10/dist-packages/dagshub/upload/wrapper.py in upload(self, local_path, commit_message, remote_path, **kwargs)
    286         else:
    287             file_to_upload = DataSet.get_file(str(local_path), remote_path)
--> 288             self.upload_files([file_to_upload], commit_message=commit_message, **kwargs)
    289 
    290     def upload_files(

/usr/local/lib/python3.10/dist-packages/dagshub/upload/wrapper.py in upload_files(self, files, directory_path, commit_message, versioning, new_branch, last_commit, force)
    375             timeout=None,
    376         )
--> 377         self._log_upload_details(data, res, files)
    378 
    379         # The ETag header contains the hash of the uploaded commit,

/usr/local/lib/python3.10/dist-packages/dagshub/upload/wrapper.py in _log_upload_details(self, data, res, files)
    413             log_message(f"Got unknown successful status code {res.status_code}")
    414         else:
--> 415             raise determine_upload_api_error(res)
    416 
    417     def _poll_mirror_up_to_date(self):

DagsHubAPIError: file missing from storage:
Required resource is missing from the storage, is '' stored in your repository DagsHub storage?

Структура файла репо выглядит следующим образом:
Локальный диск:
корень/
  |...данные/
    |... винокачество.txt

Дистанционно:
корень/
  |...данные/
     |...сырой/

Обратите внимание, что «raw» — это версия, контролируемая DVC, но документация dagshub показывает, что это можно сделать следующим образом: Загрузить данные

Не уверен, чего мне не хватает.

Привет, Дин из команды DagsHub. Трудно узнать на 100%, не имея возможности воспроизвести это локально, но сообщение об ошибке, похоже, предполагает, что имя файла представляет собой пустую строку. Вы успешно загрузили в репозиторий какой-то другой файл? Одна из возможных вещей, которую следует проверить: если на пульте дистанционного управления уже есть папка, для ее обновления может потребоваться force=True.

Dean Dean 04.03.2024 09:16

Эй, Дин, спасибо. Мой репозиторий здесь: dagshub.com/delta2echo/MLflow.Demo Мне кажется, что я упускаю что-то очевидное, поскольку знаю, что это должно быть просто. Я успешно загрузил другие файлы, но не файл данных, как показано выше.

J.Kent 04.03.2024 18:55

Понятно, спасибо, что поделились. Глядя на этот репозиторий, кажется, что вам не хватает некоторых файлов DVC, которые должны были быть там ранее: dagshub.com/delta2echo/MLflow.Demo/src/main/data/raw. Я предполагаю, что это не удается, поскольку вы пытаетесь загрузить в папку, но он не может найти текущее содержимое папки. Я понимаю, в чем здесь проблема. Поскольку вы начали с шаблона, который имеет некоторую структуру с DVC, но файлы не помещаются в него должным образом, он не позволит вам добавить что-либо новое. Если вы попробуете другой путь, которого еще не существует, он сработает.

Dean Dean 05.03.2024 19:58
Laravel выгрузка файлов
Laravel выгрузка файлов
Загрузка файлов - распространенная функция в веб-приложениях, и Laravel позволяет очень просто работать с загрузкой файлов. В этой статье мы...
3
3
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, что проблема вызвана отсутствием файлов, отслеживаемых DVC, что не позволяет добавлять новые файлы в каталог. Чтобы решить проблему, запустите следующий код:

pip install dvc "dvc[s3]", если он еще не установлен.

git clone https://dagshub.com/<user_name>/<repo_name>.git
cd <repo_name>

dvc remote add origin --local s3://dvc
dvc remote modify origin --local endpointurl https://dagshub.com/<user_name>/<repo_name>.s3

dvc remote modify origin --local access_key_id <your_token>
dvc remote modify origin --local secret_access_key <your_token>

Затем, как только все будет настроено, выполните следующее:

mkdir -p data/raw
dvc commit data/raw.dvc
dvc push -r origin

Затем запустите свой код. Теперь это будет работать!

При этом мы, вероятно, тоже можем улучшить это с нашей стороны, поэтому я поделюсь этим с командой инженеров!

Спасибо за вопрос :)

Спасибо за дополнительную информацию. Я следовал инструкциям, которые вы изложили, но в итоге получил эту ошибку: |Сбор |3.00 [00:00, 58,5 записей/с] |Отправка |Запрос удаленного кэша: 0% 0/1 [00:00<?, ?files/s] ] |Запрос удаленного кэша: 0% 0/1 [00:00<?, ?files/s{'info': ''}] |Нажатие |ОШИБКА: непредвиденная ошибка - [Errno 5] Произошла ошибка (401), когда вызов операции |HeadObject: Unauthorized: Произошла ошибка (401) при вызове операции |HeadObject: Unauthorized | |Есть какие-нибудь проблемы? Свяжитесь с нами по адресу dvc.org/support, мы всегда рады помочь!

J.Kent 06.03.2024 03:43

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

Dean Dean 08.03.2024 07:25

Да вы правы! У меня была опечатка. Спасибо за все что ты сделал для меня!

J.Kent 09.03.2024 22:47

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