2016-09-06 3 views
1

GCP를 사용하는 더크 된 Datalab Deployer의 데이터를 비공개 Cloud Datalab Deployer에서 성공적으로 마이 그 레이션합니다. MacOS를 사용 중이고 홈 디렉토리가 컨테이너의 /content 디렉토리에 연결되어 있음을 알 수 있습니다. 그래서 내 노트북은 Datalab Jupyter 인터페이스에서 액세스 할 수 있습니다.Jupyter 파이썬 셀에서 Datalab의 컨테이너에있는 파일에 액세스 할 수 없습니다.

내 노트에는 노트 자체와 동일한 디렉토리에있는 텍스트 파일에서 정지 단어 목록을로드하는 텍스트 처리 루틴이 있습니다. 하지만 파이썬 코드에서 /content 디렉토리에있는 파일 중 하나에 액세스하려고 할 때, 나는 '파일이 존재하지 않는'오류가 나타납니다 내가 ls 명령을 실행할 때 내가 볼 수없는, 참으로

>>> stopwords_full = load_stopwords_from_file('./stopwords/verylong_words_list.txt') 

IOError: File ./stopwords/verylong_words_list.txt does not exist 

을 등 모든 서브 파일과 /content 디렉토리 : Datalab의 이전 버전에서

>>> !ls 
bin dev lib mnt  proc sbin sys usr 
boot  etc lib64 node_modules root srcs tmp var 
datalab home media opt  run srv tools 

나는 이러한 오류를 가지고 있지 않았다.

Datalab Jupyter 파이썬 셀에서 컨테이너의 /content 디렉토리에있는 파일을 어떻게 처리합니까? GCP에 Datalab를 사용하는 경우

나는 !hostname이 datalab 게이트웨이의 호스트 이름을 표시 발견이는 답이없는 질문으로 표시되지 않도록

+0

GCP에서 Datalab을 사용하면 데이터 호스트 게이트웨이의 호스트 이름이 나타납니다. [Datalab local] (https://cloud.google.com/datalab/docs/quickstarts/quickstart-local) 설정을 사용하면 내 로컬 컨테이너의 호스트 이름이 표시됩니다. '! ls'을 실행하면 로컬 파일에 접근 할 수 있고'content' 폴더를 볼 수 있습니다. GCP에서 Datalab을 사용할 때 파일에 액세스하기위한 한 가지 가능한 해결 방법은 Google Cloud Storage를 사용하는 것입니다. 도움이 될 수있는 [다음 링크] (https://github.com/googledatalab/notebooks/blob/master/tutorials/BigQuery/Importing%20and%20Exporting%20Data.ipynb)에 예제가 있습니다. –

+1

고마워요 @AnthoniosPartheniou! Google Cloud Storage를 사용하는 것과 같은데 내 문제가 해결됩니다. GCS (우리 팀이 Google Cloud Source Repositories를 통해 노트북을 공유 함)에서'git'을 사용할 수 있는지 알고 있습니까? 'gsutil rsync' [해결 방법] (http://stackoverflow.com/questions/29859651/sync-github-repository-with-google-cloud-storage-bucket)을 찾았지만 더 간단한 해결책이 될 수도 있습니다. –

+1

커널이 GCP에 있지만 노트북은 로컬 컴퓨터에 있습니다. Google Cloud Source Repositories는 계속 사용할 수 있습니다. 로컬 시스템에 [저장소를 복제] (https://cloud.google.com/source-repositories/docs/adding-repositories-as-remotes)하면됩니다. 'docker run ... '명령에서'-v "$ {HOME} :/content"'를 변경하십시오.'$ {HOME}'텍스트를 여러분의 노트가 들어있는 폴더의 경로로 대체하십시오. 팀과 폴더를 공유/동기화 할 수 있으므로 Google 드라이브는 노트북을 다른 방법으로 공유 할 수 있습니다. 개인적으로 클라우드 소스 저장소를 로컬 git 클라이언트와 함께 사용하는 것이 좋습니다. –

답변

0

답으로 내 코멘트를 추가. Datalab local 설정을 사용하면 로컬 컨테이너의 호스트 이름이 표시됩니다. Datalab 로컬 설정을 사용하면 !ls을 실행할 때 로컬 파일에 액세스하고 콘텐츠 폴더를 볼 수 있습니다. GCP에서 Datalab을 사용할 때 파일에 액세스하기위한 한 가지 가능한 해결 방법은 Google Cloud Storage를 사용하는 것입니다. 도움이 될 수있는 예가 following link입니다.

1

아마도 셀에서 'git checkout'을 실행할 수도 있습니다. 이것은 원칙적으로 txt 파일을 호스트 VM에 넣고 그 경로를 조정할 수 있습니다.

GPC의 git 인터페이스가 버그가 있다는 점을 고려하여 AppEng 배포 버전의 Datalab에서 이와 같은 모든 종류의 해킹 작업을 수행해야했습니다. 완벽한 솔루션이 아닙니다.

의 셀 내에서 CLI 호출을 사용할 수 있습니다. 버킷에 파일을 저장 한 다음 VM 내부에 복사 할 수 있습니다. gsutil

+0

아이디어를 주셔서 감사합니다 @JoseCelaya! 시도해 볼 것이지만 Compute Engine 인스턴스 저장소가 다시 시작될 때마다 다시 초기화된다는 인상을 받았습니다. 모든 시나리오를 확인해야합니다 ... –

+0

@AlexanderUsoltsev 예, 그렇습니다. 모든 GCE 리소스에 대해 Google은 가끔씩 다시 배포합니다. 실제로 이것은 AppEngine 버전 Cloud Datalab의 문제였습니다. 때때로 Google은 기본 VM을 재배포 (재시작 만하지는 않음) 할 것이고 우리가 설치 한 모든 것이 지워질 것입니다. 우리가 한 일은 결국 % bash 마법 함수를 사용하여 모든 설치 호출로 노트북을 정의하는 것입니다. 재배치 다음날 우리의 작업이 효과가 없을 것이며 모든 패키지를 다시 설치하는 힌트로 사용했습니다. –

+0

Datalab 인스턴스가 사용하는 컴퓨팅 엔진 인스턴스는 실제로 임시 인스턴스입니다. Google의 클라우드 교육에 사용 된 노트북 중 하나 인 [CPB100] (https://github.com/GoogleCloudPlatform/training-data-analyst/blob/8bde4de393bfdd1d91231a27776f1962577305ed/CPB100/lab4c/mlapis.ipynb)에는 pip 설치를위한 시스템 명령이 포함되어 있습니다 Google API는 노트북에서 ML API를 사용합니다 (두 번째 셀 중단). 해키지만, 노트북 마술은 지금 가장 좋은 접근 방법 인 것 같습니다. – charlesreid1

관련 문제