Есть ли способ управлять изменениями пути от локального к облачному? - PullRequest
0 голосов
/ 29 января 2020

Я регулярно сотрудничаю в больших проектах по анализу данных с использованием PySpark. Мы разработали этот проект, работая с локальными файлами. Теперь мы хотим развернуть этот проект в Google Cloud. Поскольку существует множество локальных путей, мы должны изменить их на облачные пути Google. Есть ли хороший способ управлять путями и? Этот способ должен способствовать переходу от локального к облачному. Я попытался добавить каждый путь в качестве переменной. Пример:

# [START download-data]

iris_data_filename = 'iris_data.csv'

iris_target_filename = 'iris_target.csv'

data_dir = 'gs://cloud-samples-data/ml-engine/iris'



# gsutil outputs everything to stderr so we need to divert it to stdout.

subprocess.check_call(['gsutil', 'cp', os.path.join(data_dir,

iris_data_filename),

iris_data_filename], stderr=sys.stdout)

subprocess.check_call(['gsutil', 'cp', os.path.join(data_dir,

iris_target_filename),

iris_target_filename], stderr=sys.stdout)

# [END download-data]





# [START load-into-pandas]

# Load data into pandas, then use `.values` to get NumPy arrays

iris_data = pd.read_csv(iris_data_filename).values

iris_target = pd.read_csv(iris_target_filename).values

Спасибо

1 Ответ

1 голос
/ 29 января 2020

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

LOCAL_DIR = '/home/user/dir'
GCS_DIR = 'gs://my-bucket/dir'

# Choose the data_dir value according to your needs
data_dir = LOCAL_DIR if current_env == 'local' else GCS_DIR

# Continue working
iris_target_filename = 'iris_target.csv'

# Example of the full path
full_path = os.path.join(data_dir, iris_target_filename)

Кроме того , начиная с pandas 0,24, если вы установили gcsfs , вы можете использовать путь GCS напрямую, без предварительной загрузки файла, что упростит переключение между средами.

Пример:

pd.read_csv('gs://cloud-samples-data/ml-engine/iris/iris_data.csv')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...