我经常使用PySpark在大型数据分析项目上进行协作。我们开发了使用本地文件的项目。现在我们想把这个项目部署到谷歌云。 由于有很多本地路径,我们必须将它们更改为谷歌云路径。有没有管理路径和 ?这种方式应该有助于从本地到云的更改。 我尝试将每个路径添加为变量。举个例子:
# [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
谢谢
是的,我会将本地路径的基本目录保留在一个变量中,将云存储路径保留在另一个变量中,因此您可以根据环境轻松地在它们之间切换。
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')