9

Tôi đã viết một công việc về tia lửa trên máy cục bộ của mình đọc tệp từ bộ nhớ đám mây của google bằng cách sử dụng trình kết nối google hadoop như gs: //storage.googleapis.com/ là được đề cập trong https://cloud.google.com/dataproc/docs/connectors/cloud-storageKhông thể kết nối tệp Google Storage bằng trình kết nối GSC từ Spark

Tôi đã thiết lập tài khoản dịch vụ với tính năng bộ nhớ và động cơ tính toán. cấu hình tia lửa của tôi và mã là

SparkConf conf = new SparkConf(); 
conf.setAppName("SparkAPp").setMaster("local"); 
conf.set("google.cloud.auth.service.account.enable", "true"); 
conf.set("google.cloud.auth.service.account.email", "[email protected]"); 
conf.set("google.cloud.auth.service.account.keyfile", "/root/Documents/xxx-compute-e71ddbafd13e.p12"); 
conf.set("fs.gs.project.id", "xxx-990711"); 
conf.set("fs.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem"); 
conf.set("fs.AbstractFileSystem.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem"); 

SparkContext sparkContext = new SparkContext(conf); 
JavaRDD<String> data = sparkContext.textFile("gs://storage.googleapis.com/xxx/xxx.txt", 0).toJavaRDD(); 
data.foreach(line -> System.out.println(line)); 

Tôi đã thiết lập biến môi trường cũng được đặt tên GOOGLE_APPLICATION_CREDENTIALS mà chỉ vào tập tin quan trọng. Tôi đã thử sử dụng cả hai tệp chính, ví dụ: json & P12. Nhưng không thể truy cập tệp. Các lỗi mà tôi nhận được là

java.net.UnknownHostException: metadata 
java.io.IOException: Error getting access token from metadata server at: http://metadata/computeMetadata/v1/instance/service-accounts/default/token 
     at com.google.cloud.hadoop.util.CredentialFactory.getCredentialFromMetadataServiceAccount(CredentialFactory.java:208) 
     at com.google.cloud.hadoop.util.CredentialConfiguration.getCredential(CredentialConfiguration.java:70) 

Tôi đang chạy công việc của tôi từ nhật thực với java 8, châm ngòi 2.2.0 phụ thuộc và gcs-connector 1.6.1.hadoop2. Tôi chỉ cần kết nối bằng tài khoản dịch vụ chứ không phải bằng cơ chế OAuth.

Cảm ơn trước

+0

Bạn đã cố gắng để thiết lập các thông số của bạn trong 'sparkContext.hadoopConfiguration' thay vì ' SparkConf'? –

Trả lời

0

Bạn đang thử địa phương? Nếu có thì bạn cần phải thiết lập các biến môi trường GOOGLE_APPLICATION_CREDENTIALS-key.json của bạn hoặc đặt nó vào HadoopConfiguration thay vì thiết lập nó để SparkConf như:

Configuration hadoopConfiguration = sparkContext.hadoopConfiguration(); 
    hadoopConfiguration.set("google.cloud.auth.service.account.enable", true); 
    hadoopConfiguration.set("google.cloud.auth.service.account.email", "[email protected]"); 
    hadoopConfiguration.set("google.cloud.auth.service.account.keyfile", "/root/Documents/xxx-compute-e71ddbafd13e.p12"); 
Các vấn đề liên quan