#python #python-3.x #pandas #databricks
#python #python-3.x #pandas #блоки данных #databricks
Вопрос:
Я пытаюсь решить проблему pandas при запуске кода python3.7 на databricks.
Ошибка:
ImportError: cannot import name 'roperator' from 'pandas.core.ops' (/databricks/python/lib/python3.7/site-packages/pandas/core/ops.py)
версия pandas:
pd.__version__
0.24.2
Я запускаю
from pandas.core.ops import roperator
ну, на моем ноутбуке с
pandas 0.25.1
Итак, я попытался обновить pandas на databricks.
%sh pip uninstall -y pandas
Successfully uninstalled pandas-1.1.2
%sh pip install pandas==0.25.1
Collecting pandas==0.25.1
Downloading pandas-0.25.1-cp37-cp37m-manylinux1_x86_64.whl (10.4 MB)
Requirement already satisfied: python-dateutil>=2.6.1 in /databricks/conda/envs/databricks-ml/lib/python3.7/site-packages (from pandas==0.25.1) (2.8.0)
Requirement already satisfied: numpy>=1.13.3 in /databricks/conda/envs/databricks-ml/lib/python3.7/site-packages (from pandas==0.25.1) (1.16.2)
Requirement already satisfied: pytz>=2017.2 in /databricks/conda/envs/databricks-ml/lib/python3.7/site-packages (from pandas==0.25.1) (2018.9)
Requirement already satisfied: six>=1.5 in /databricks/conda/envs/databricks-ml/lib/python3.7/site-packages (from python-dateutil>=2.6.1->pandas==0.25.1) (1.12.0)
Installing collected packages: pandas
ERROR: After October 2020 you may experience errors when installing or updating packages.
This is because pip will change the way that it resolves dependency conflicts.
We recommend you use --use-feature=2020-resolver to test your packages with the new resolver before it becomes the default.
mlflow 1.8.0 requires alembic, which is not installed.
mlflow 1.8.0 requires prometheus-flask-exporter, which is not installed.
mlflow 1.8.0 requires sqlalchemy<=1.3.13, which is not installed.
sklearn-pandas 2.0.1 requires numpy>=1.18.1, but you'll have numpy 1.16.2 which is incompatible.
sklearn-pandas 2.0.1 requires pandas>=1.0.5, but you'll have pandas 0.25.1 which is incompatible.
sklearn-pandas 2.0.1 requires scikit-learn>=0.23.0, but you'll have scikit-learn 0.20.3 which is incompatible.
sklearn-pandas 2.0.1 requires scipy>=1.4.1, but you'll have scipy 1.2.1 which is incompatible.
Successfully installed pandas-0.25.1
Когда я запускаю:
import pandas as pd
pd.__version__
это все еще:
0.24.2
Я что-то пропустил?
Спасибо
Ответ №1:
Действительно рекомендуется устанавливать библиотеки с помощью скрипта инициализации кластера. %sh
Команда выполняется только на узле драйвера, но не на узлах исполнителя. И это также не влияет на экземпляр Python, который уже запущен.
Правильным решением будет использовать dbutils.library
команды, подобные этой:
dbutils.library.installPyPI("pandas", "1.0.1")
dbutils.library.restartPython()
это установит библиотеку во все места, но для получения новых библиотек потребуется перезапуск Python.
Кроме того, хотя можно указать только имя пакета, рекомендуется явно указывать версию, поскольку некоторые версии библиотеки могут быть несовместимы с runtime. Кроме того, рассмотрите возможность использования более новых сред выполнения, где версии библиотеки уже обновлены — проверьте примечания к выпуску для сред выполнения, чтобы выяснить, какие версии библиотеки установлены из коробки.
Для более новых сред выполнения Databricks вы можете использовать новые волшебные команды: %pip
и %conda
для установки зависимостей. Смотрите документацию для получения более подробной информации.
Комментарии:
1. После установки pandas и перезапуска python он будет установлен на всех узлах кластера. Что, если кластер перезапустится снова? Нужно ли мне снова запускать dbutils?
2. Я не проверял, но если она просто перезапущена, я думаю, что она должна остаться. Но если вы хотите гарантировать — используйте в нем скрипт для установки pandas