Атлас не создан попробуйте другой каталог или файл

Обновлено: 03.07.2024

Хотя можно работать полностью в веб-интерфейсе Atlas, если вы хотите работать с вашим любимым локальным текстовым редактором или если вы хотите получить прямой доступ к мощным инструментам Git, вы можете клонировать репозиторий своего проекта из Atlas. Во-первых, вам нужно связать открытый ключ SSH с Atlas.

Хотя это руководство поможет вам начать работу с базового примера рабочего процесса, в Git есть много других полезных функций, которые здесь не перечислены. Дополнительную информацию можно найти в официальной документации Git.

В новых проектах Atlas имя ветки по умолчанию используется main. В зависимости от того, когда они были созданы, существующие проекты могут иметь master в качестве имени по умолчанию. В документации Atlas предполагается, что main используется по умолчанию.

Ветку Git по умолчанию для существующего проекта Atlas можно изменить на основную по запросу. Обратитесь за помощью к производственному персоналу O'Reilly.

Создание ключа

Предупреждение

Если вы используете Windows, мы рекомендуем установить Git локально с помощью проекта msysGit. Это даст вам доступ к командной среде под названием Git Bash, а также позволит использовать программу ssh-keygen, упомянутую ниже.

Сначала проверьте наличие существующего ключа, открыв терминал или Git Bash и введя:

Если вы получите вывод, это должна быть длинная строка, начинающаяся с "ssh-" и заканчивающаяся вашим адресом электронной почты. Это ваш открытый ключ. Скопируйте всю строку и перейдите к следующему разделу.

Внимание

В следующем шаге вам будет предложено ввести кодовую фразу для этого ключа; если вы его не помните, создайте новый.

  1. В терминале/Git Bash введите: ssh-keygen -t rsa -C "your_email@example.com" . Обязательно укажите адрес электронной почты, который вы используете в Atlas.
  2. При появлении запроса "Введите файл для сохранения ключа (/Users/you/.ssh/id_rsa)" просто нажмите клавишу "Ввод".
  3. Введите кодовую фразу. Вам нужно будет сделать это дважды.

Вы должны увидеть вывод, указывающий, что ваш ключ создан. Теперь вы можете снова запустить эту команду:

Теперь вы должны увидеть строку, которая начинается с "ssh-" и заканчивается вашим адресом электронной почты. Скопируйте эту строку.

Добавление ключа в Atlas

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

Вкладка SSH на странице настроек учетной записи< бр />

В разделе "Добавить ключ SSH" добавьте описательный заголовок (например, "локальный компьютер"), а затем вставьте скопированную ранее строку в поле "Открытый ключ".

Экран ключей SSH, на котором можно добавить ключи SSH в Атлас

Нажмите кнопку "Добавить ключ", и все! Теперь у вас должна быть возможность клонировать репозитории Atlas и работать с файлами локально.

После добавления открытого ключа SSH в Atlas вы готовы начать использовать Git для работы со своим проектом.

Загрузить Git

Вы можете загрузить Git с сайта git-scm. Просто следуйте инструкциям для вашей платформы.

Клонируйте свой проект из Atlas

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

Вам будет предложено ввести кодовую фразу ключа SSH; введите парольную фразу, которую вы выбрали при создании ключа SSH.

Теперь вы можете открывать и редактировать свои файлы в своем любимом текстовом редакторе. Вы также можете использовать инструменты командной строки Git для выполнения операций контроля версий, недоступных в веб-приложении Atlas.

Отправка отредактированных файлов обратно в Atlas

После внесения изменений вам нужно будет добавить все новые файлы, которые будет отслеживать Git, зафиксировать изменения, а затем отправить их обратно в Atlas:

  1. Добавьте все новые файлы, чтобы Git мог начать их отслеживать. Используйте git add, чтобы добавить отдельный файл. Используйте git add. чтобы добавить все файлы в текущий каталог и все подкаталоги.
  2. Зафиксируйте изменения, используя git commit -am "commit message" . Попробуйте использовать сообщение коммита, чтобы оставить себе заметку о том, что вы делали. Например, если вы просто добавляете большой раздел в метод foo, вы должны добавить сообщение вроде "Добавлен раздел, посвященный foo".
  3. Отправьте изменения обратно в Atlas с помощью git push origin main .
Предупреждение

Если вы получаете сообщение о том, что ваши изменения отклонены, это, скорее всего, связано с тем, что кто-то изменил файлы в Atlas с тех пор, как вы начали работать локально. Чтобы исправить это, вам нужно зафиксировать текущие изменения, а затем использовать git pull origin main, чтобы получить изменения из Atlas. После синхронизации изменений вы сможете снова запустить свою работу.

Получение различий

Вы можете использовать Git, чтобы получить различия между файлами в вашей локальной кассе и файлами в Atlas. Для этого используйте git fetch :

Это извлекает изменения в локальную ветвь, но не объединяет их автоматически.

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

Эта команда просто даст вам список файлов. Если вы хотите увидеть фактические различия, просто оставьте флаг --name-only. Как только вы убедитесь, что там нет ничего вредоносного, вы можете объединить изменения, которые вы только что получили, с помощью этой команды:

Вот некоторые из ключевых терминов, которые вам необходимо понять, чтобы использовать git:

Локальный репозиторий Репозиторий Git, который находится на вашем локальном диске. Вы можете вносить любые изменения в эту копию, не затрагивая файлы в других удаленных репозиториях (см. ниже). Ветвь Именованный набор версий файлов в репозитории Git. Имя по умолчанию — «основное». Удаленный репозиторий

Именованная ссылка на репозиторий Git в другом каталоге или на другом компьютере. У вас может быть столько удаленных репозиториев, сколько вы хотите. Репозиторий, из которого вы клонировали свой локальный репозиторий, по умолчанию называется «исходным», но вы можете выбрать любое имя, которое вам нравится, когда вы добавляете новые «удаленные».

Push and pull жаргон Git для отправки изменений, сделанных в локальном репозитории, в удаленный репозиторий или наоборот. Клонирование Загрузка удаленного репозитория Git на свой компьютер, чтобы вы могли редактировать его локально. Фиксация Фиксация сохраняет все ваши изменения под контролем версий.

При написании кода для анализа (как и в любом программном обеспечении) довольно часто что-то не работает. Обычно это означает, что у вас есть какая-то проблема в вашем коде или конфигурации, и обычно это первое, что вы должны искать. Однако иногда вы уверены, что все делаете правильно, а ваш код просто ведет себя странно. Есть несколько вещей, которые вы можете попытаться восстановить после более странных сбоев.

По сути, первое, что нужно сделать, — это повторно запустить cmake и make и посмотреть, решит ли это проблему. Довольно часто вы забываете перекомпилировать, и тогда ваш исходный код больше не соответствует вашему скомпилированному коду.

Следующее, что нужно попробовать, — это выйти из системы и снова войти в нее, настроить выпуск, как описано выше. Иногда вы ошибаетесь в настройках оболочки, истек срок действия ваших билетов Kerberos и т. д., и вы можете просто избежать всех этих проблем одним быстрым движением.

Еще один простой способ — удалить весь каталог сборки и создать его заново, как описано здесь, обычно в сочетании с выходом из системы и повторным входом в нее. Иногда вы просто испортите каталог сборки в той или иной форме (например, настроив неправильный релиз). Есть и другие способы исправить это, но самый простой и надежный — воссоздать весь каталог сборки. Это также причина, по которой мы советуем вам не помещать файлы, которые вы создаете, в каталог сборки, иначе вы потеряете их при удалении каталога сборки.

Если вы не работаете с lxplus, вы можете попробовать запустить lxplus, хотя бы в качестве теста. Хотя иногда вы можете столкнуться с тем, что узел lxplus работает неправильно, в целом они по-прежнему являются нашим эталоном для правильно настроенных систем ATLAS, и если программное обеспечение работает там, но не в кластере вашего института, это, вероятно, означает, что компьютеры вашего института неправильно настроены.

Если ничего из этого не помогает, возможно, стоит обратиться за помощью.

Автор: Analysis Software Group. Сообщайте о любых проблемах здесь.

Создано с помощью Jekyll и Bootstrap. Спасибо HEP Software Foundation за идеи компоновки.

Просмотрите список проблем Apache Atlas, решенных в Cloudera Runtime 7.2.10.

CDPD-23721: Улучшен хук Hive (HS2), чтобы отправлять только информацию о происхождении. До этого изменения хук Atlas HiveServer2, который отслеживает объекты Hive, отправлял технические метаданные и данные о происхождении в Atlas. Это приводит к дублированию технических метаданных, поскольку они также отправляются Hive Metastore Hook. Хук HS2 теперь отправляет в Atlas только данные о происхождении. Это уменьшает объем данных, отправляемых хуком, на 60%. Это также делает его поведение совместимым с другими хуками, такими как Impala и Spark. Теперь эта проблема решена.

OPSAPS-19748: Обновите typedef hive_db, чтобы иметь управляемое расположение. Добавлен атрибут «managedLocation» для сущности hive_db в Atlas. Теперь эта проблема решена.

OPSAPS-58847: протокол Atlas TLS исключает измененный на TLSv1 и TLSv1.1 вместо более раннего TLSv1.2. Теперь эта проблема решена.

CDPD-11790: Сущность оболочки не преобразуется в сущность Complete при определенных условиях. Сущности оболочки с повторяющимся квалифицированным именем больше не создаются при обработке сообщения от Spark Atlas Connector. Теперь эта проблема решена.

CDPD-14031: В соединителе Spark Atlas несколько объектов S3 создаются с использованием модели V1 S3 вместо обновленной модели V2 S3.Используйте модели Atlas S3 v2 в Spark Atlas Connector. Теперь эта проблема решена.

OPSAPS-57947: Неверная конфигурация SSL Kafka Broker в режиме высокой доступности. При развертывании DataHub в режиме высокой доступности некоторые конфигурации Ranger и Atlas вычисляются неправильно. В частности, atlas.kafka.security.protocol в Atlas, свойствах SSL и службах REST URL в зависимости от Ranger.

CDPD-13645: Содержит sortBy=name, атрибут 'name' отсутствует в определении hive_storagedesc. Кроме того, если sortBy не передан, атрибутом по умолчанию является name Validated, если атрибут sortBy, переданный в запросе, присутствует в определении конца отношения, если нет, игнорирует сортировку. Проверяется, если атрибут sortBy не передан, имя атрибута по умолчанию присутствует в определении конца связи, если нет, игнорирует сортировку.

CDPD-10873 1) Исправлены метрики агрегации быстрого поиска при фильтрации с помощью системных атрибутов 2) Исправлены метрики агрегации быстрого поиска при фильтрации с использованием более одного фильтра 3) Исправлены метрики агрегации быстрого поиска при фильтрации с помощью оператора отрицания

CDPD-11681: 1. Отфильтруйте результаты поиска с несколькими типами объектов по строке typeName, разделенной запятыми, в запросе, например. "typeName": "hive_table,hive_db". 2. Отфильтруйте результаты поиска с несколькими тегами по строке тегов, разделенных запятыми, в запросе. Например. "классификация": "тег1,тег2".

CDPD-13199: Неверные значения атрибутов при массовом импорте При импорте назначений атрибутов бизнес-метаданных Atlas использовал только последнее присвоенное значение атрибута вместо отдельных значений для каждого объекта в списке импорта.

CDPD-372: все запросы Spark из одного сеанса Spark были включены в один процесс Atlas Сеанс Spark может включать несколько запросов. Когда Atlas сообщает метаданные Spark, он создает единый объект процесса, соответствующий сеансу Spark. В результате изображение родословной Atlas показывало несколько входных объектов или несколько выходных объектов для процесса, но входы и выходы были связаны только тем фактом, что они были включены в операции в одном и том же сеансе Spark. В этом выпуске Spark Atlas Connector создает сущность spark_application для каждого задания Spark. Каждый поток данных, создаваемый заданием, создает сущность spark_process в Atlas, которая отслеживает фактические наборы входных и выходных данных для этого процесса. Дополнительные сведения см. в разделе Сбор метаданных Spark.

CDPD-12620: Индикатор выполнения миграции не обновляется На этапе импорта миграции Cloudera Navigator в Apache Atlas индикатор выполнения миграции неправильно обновляет статус миграции. На странице статистики в пользовательском интерфейсе Atlas отображаются правильные сведения о миграции. Эта проблема решена.

CDPD-10151: Короткие процессы заданий Spark могут быть потеряны В редких случаях события, захваченные для Atlas с помощью Spark Atlas Connector, могут быть удалены до того, как метаданные достигнут Atlas. Более вероятно, что событие будет потеряно в очень коротких работах. Эта проблема решена.

CDPD-6042: Неверное расположение базы данных Hive по умолчанию в метаданных Atlas Расположение базы данных Hive по умолчанию, указанное через подключаемый модуль HMS-Atlas, не соответствует фактическому расположению базы данных. Эта проблема не влияет на базы данных не по умолчанию. Эта проблема решена.

CDPD-4662: Ссылки на графики происхождения не работают Графики происхождения Atlas не содержат гиперссылок с активов на страницы сведений об активах, и щелчок по активу не приводит к ошибке в журнале. Щелчок ребра на графике по-прежнему предоставляет доступ к параметрам поведения ребра, таким как управление распространением классификаций. Эта проблема решена.

CDPD-3700: Отсутствует родословная Impala и Spark между таблицами и их файлами данных Atlas не создает родословную между таблицами Hive и их резервными файлами HDFS для процессов CTAS, запущенных в Impala или Spark. Эта проблема решена. Дополнительные Cloudera JIRA: CDP-5027, CDPD-3700 и IMPALA-9070

Информация об исправлении Apache

Исправления Apache в этом выпуске. У этих исправлений нет связанного идентификатора ошибки Cloudera.

Mongoose — это один из основных инструментов для управления данными для серверной части Node.js и MongoDB.

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

Предпосылки

  • Знакомство с использованием Express для сервера. Вы можете ознакомиться с этой статьей об Express и официальной документацией по Express.
  • Знакомство с настройкой REST API без аутентификации. Вы можете ознакомиться с этой статьей о маршрутизации с помощью Express и с этой статьей об асинхронности и ожидании.

Для тестирования конечных точек API рекомендуется загрузить и установить такой инструмент, как Postman.

Это руководство было проверено для Node v15.3.0, npm v7.4.0, express v4.17.1, мангуст v5.11.12 и MongoDB v4.2.

Настройка Атласа MongoDB

Для этого проекта также требуется учетная запись MongoDB Atlas.

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

Шаг 1 — Настройка проекта

В этом разделе вы создадите каталог для своего проекта и установите зависимости.

Создайте новый каталог для вашего проекта:

Перейдите к только что созданному каталогу:

Теперь вы можете инициализировать новый проект npm:

Далее установите экспресс и мангуст :

На этом этапе у вас будет новый проект с экспрессом и мангустом .

Шаг 2 — Настройка сервера

В этом разделе вы создадите новый файл для запуска сервера Express, подключитесь к базе данных MongoDB Atlas и импортируете будущие маршруты.

Создайте новый файл server.js и добавьте следующие строки кода:

Обратите внимание на строку подключения. Это строка подключения, предоставляемая MongoDB Atlas. Вам нужно будет заменить учетную запись администратора ( madmin ), пароль, имя кластера ( clustername ) и имя базы данных ( dbname ) значениями, которые относятся к вашему кластеру:

mongoose.connect() примет строку подключения и объект параметров конфигурации. Для целей этого руководства параметры конфигурации useNewUrlParser , useFindAndModify и useUnifiedTopology необходимы, чтобы избежать предупреждения об устаревании.

На данный момент у вас есть запущенный сервер Express. Затем вам нужно будет определить схему и обработать маршруты.

Шаг 3 — Создание схемы

Во-первых, вам понадобится шаблон для структурирования данных, и эти шаблоны называются схемами. Схемы позволяют вам точно решить, какие данные вам нужны и какие параметры вы хотите, чтобы данные имели как объект.

В этом руководстве вы будете использовать метод mongoose.model, чтобы сделать его пригодным для использования с фактическими данными и экспортировать его как переменную, которую вы можете использовать в foodRoutes.js.

Создайте новый каталог моделей:

Внутри этого нового каталога создайте новый файл food.js и добавьте следующие строки кода:

Этот код определяет вашу FoodSchema . Он будет состоять из значения имени типа String , будет требоваться , обрезать все пробелы и установить символы нижнего регистра. Он также будет состоять из значения калорий типа «Число» со значением по умолчанию 0 и проверкой, чтобы убедиться, что отрицательные числа не отправлены.

Шаг 4. Построение маршрута чтения

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

Вы начнете с чтения всех продуктов в базе данных. На данный момент это будет пустой массив.

Создайте новый каталог маршрутов:

Внутри этого нового каталога создайте новый файл foodRoutes.js и добавьте следующие строки кода:

Этот код устанавливает конечную точку /foods для запросов GET (обратите внимание на множественное число «s»). Функция запроса Mongoose find() возвращает все объекты с соответствующими параметрами. Поскольку параметры не были предоставлены, будут возвращены все элементы в базе данных.

Поскольку функции Mongoose асинхронны, вы будете использовать async/await. Когда у вас есть данные, этот код использует блок try/catch для их отправки. Это будет полезно для проверки данных с помощью Postman.

Перейдите в корень каталога вашего проекта и запустите сервер Express с помощью следующей команды в терминале:

В Postman создайте новый запрос на чтение всей еды. Убедитесь, что тип запроса установлен на GET . Установите URL-адрес запроса на localhost:3000/foods. И нажмите Отправить.

Примечание. Если вам нужна помощь в навигации по интерфейсу Postman для запросов, обратитесь к официальной документации.

Результаты Postman будут отображать пустой массив.

Шаг 5. Построение маршрута создания

Затем вы создадите функциональность для создания нового продукта питания и сохранения его в базе данных.

Вновь откройте файл foodRoutes.js и добавьте следующие строки кода между app.get и module.exports:

Этот код устанавливает конечную точку /food для запросов POST. Функция запроса Mongoose .save() используется для сохранения переданных ей данных в базу данных.

В Postman создайте новый запрос под названием «Создать новую еду». Убедитесь, что тип запроса установлен на POST . Установите URL-адрес запроса на localhost:3000/food .

В разделе "Основная часть" выберите необработанные данные и JSON. Затем добавьте новый продукт питания, создав объект JSON с названием и калориями:

После отправки запроса «Создать новую еду» еще раз отправьте запрос «Читать всю еду». В результатах Postman отобразится только что добавленный объект.

Шаг 6. Построение маршрута обновления

Каждому объекту, созданному с помощью Mongoose, присваивается собственный идентификатор _id, и вы можете использовать его для нацеливания на определенные элементы.Это будет смесь букв алфавита и букв. Например: 5d1f6c3e4b0b88fb1d257237 .

Затем вы создадите функциональность для обновления существующего продукта питания и сохранения изменений в базе данных.

Вновь откройте файл foodRoutes.js и добавьте следующие строки кода между app.post и module.exports:

Этот код устанавливает конечную точку /food/:id для запросов PATCH. Функция запроса Mongoose .findByIdAndUpdate() принимает идентификатор цели и данные запроса, которыми вы хотите их заменить. Затем используется .save() для сохранения изменений.

В Postman создайте новый запрос под названием Update Food. Убедитесь, что тип запроса установлен на PATCH . Задайте для URL-адреса запроса значение localhost:3000/food/ , где id — это строка, идентифицирующая ранее созданную вами еду.

В разделе "Основная часть" выберите необработанные данные и JSON. Затем измените продукт питания, создав объект JSON с именем и калориями:

После отправки запроса на обновление продуктов снова отправьте запрос на чтение всех продуктов. Результаты Postman отобразят объект с измененными калориями .

Шаг 7. Создание маршрута удаления

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

Вновь откройте файл foodRoutes.js и добавьте следующие строки кода между app.patch и module.exports:

Этот код устанавливает конечную точку /food/:id для запросов DELETE. Функция запроса Mongoose .findByIdAndDelete() берет идентификатор цели и удаляет его.

В Postman создайте новый запрос под названием "Удалить еду". Убедитесь, что тип запроса установлен на DELETE . Задайте для URL-адреса запроса значение localhost:3000/food/ , где id — это строка, идентифицирующая ранее созданную вами еду.

После отправки запроса на удаление продуктов питания снова отправьте запрос на чтение всех продуктов. В результатах Postman отобразится массив без удаленного элемента.

Примечание. Теперь, когда вы завершили работу с этим учебным пособием, вы можете захотеть закрыть все кластеры MongoDB Atlas, которые вы больше не используете.

На данный момент у вас есть сервер Express, использующий методы Mongoose для взаимодействия с кластером MongoDB Atlas.

Заключение

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

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

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

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

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

Читайте также: