다른 프로젝트 ID로 Google Dataproc을 사용하여 일부 pyspark 작업을 지금까지 성공시키고 싶습니다. 저는 pyspark 및 Google Cloud가있는 초보자이지만, this 예제를 따라 갔고 잘 실행됩니다 (BigQuery 데이터 세트가 공개이거나 내 GCP 프로젝트 인 ProjectA에 속한 경우). 입력 매개 변수는 다음과 같이 :Google Dataproc에서 두 개의 다른 프로젝트 ID를 사용하는 Pyspark 및 BigQuery
bucket = sc._jsc.hadoopConfiguration().get('fs.gs.system.bucket')
projectA = sc._jsc.hadoopConfiguration().get('fs.gs.project.id')
input_directory ='gs://{}/hadoop/tmp/bigquery/pyspark_input'.format(bucket)
conf = {
# Input Parameters
'mapred.bq.project.id': projectA,
'mapred.bq.gcs.bucket': bucket,
'mapred.bq.temp.gcs.path': input_directory,
'mapred.bq.input.project.id': 'projectA',
'mapred.bq.input.dataset.id': 'my_dataset',
'mapred.bq.input.table.id': 'my_table',
}
# Load data in from BigQuery.
table_data = sc.newAPIHadoopRDD(
'com.google.cloud.hadoop.io.bigquery.JsonTextBigQueryInputFormat',
'org.apache.hadoop.io.LongWritable',
'com.google.gson.JsonObject',
conf=conf)
하지만이 ProjectB (나는 그것을 조회하는 자격 증명을 가지고)의 BQ 데이터 세트에서 작업을 실행하는 것입니다 필요한, 그래서 다음과 같이 입력 매개 변수를 설정하는 경우 :
conf = {
# Input Parameters
'mapred.bq.project.id': projectA,
'mapred.bq.gcs.bucket': bucket,
'mapred.bq.temp.gcs.path': input_directory,
'mapred.bq.input.project.id': 'projectB',
'mapred.bq.input.dataset.id': 'the_datasetB',
'mapred.bq.input.table.id': 'the_tableB',
}
그리고 BQ에서 데이터를로드하려고 시도하면 내 스크립트가 계속 실행됩니다. 어떻게 제대로 설정해야합니까?
앞서 언급 한 example을 실행 한 후 2 개의 카펫 (shard-0 및 shard-1)이 Google 스토리지에 만들어지고 해당 BQ 데이터가 포함되어 있음을 알 수 있습니다. 생성되고 비어 있습니다.