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