当前位置: 首页 > 知识库问答 >
问题:

无法连接谷歌存储文件使用GSC连接器从火花

孔欣可
2023-03-14

我写了一个火花作业在我的本地机器,从谷歌云存储读取文件使用谷歌hadoop连接器,如gs://storage.googleapis.com/https://cloud.google.com/dataproc/docs/connectors/cloud-storage

我已经设置了具有计算引擎和存储权限的服务号。我的火花配置和代码是

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", "xxx-compute@developer.gserviceaccount.com");
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));

我已经设置了环境变量也称为GOOGLE_APPLICATION_CREDENTIALS指向关键文件。我尝试使用两个关键文件,即json

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)

我使用java 8、spark 2.2.0依赖项和gcs connector 1.6.1从eclipse运行我的作业。hadoop2。我只需要使用服务帐户而不是OAuth机制进行连接。

提前谢谢

共有1个答案

薛钧
2023-03-14

你在本地试用吗?如果是,则需要将环境变量GOOGLE\u APPLICATION\u CREDENTIALS设置为键。json或将其设置为HadoopConfiguration,而不是将其设置为SparkConf,如:

    Configuration hadoopConfiguration = sparkContext.hadoopConfiguration();
    hadoopConfiguration.set("google.cloud.auth.service.account.enable", true);
    hadoopConfiguration.set("google.cloud.auth.service.account.email", "xxx-compute@developer.gserviceaccount.com");
    hadoopConfiguration.set("google.cloud.auth.service.account.keyfile", "/root/Documents/xxx-compute-e71ddbafd13e.p12");
 类似资料:
  • 我试图使用gsutil从本地linux服务器连接到谷歌云平台存储(桶)。我们有一个边界防火墙,需要打开才能连接到云存储。防火墙团队正在询问带有端口的目的地详细信息。 例如:通过gs实用程序,如果我想下载或上传文件,我使用命令gsutil cp test。txt gs://testbucket 谢谢,Sahayam。J

  • 我在尝试使用google connector从anypoint studio创建google事件时遇到以下错误。 尚未对resourceOwnerId null执行OAuth授权舞蹈 基本上,为了测试这个功能,我做了以下工作 我使用了一个侦听器连接器(路径:/hello)并配置了本地主机8081 我在google日历连接器中留下了下面剩余的字段。 资源所有者id 之前 之后 对象存储 在这两者之间

  • 刚刚在谷歌云平台上使用点击部署安装了mongodb。我有另一个项目,我为其创建了mongodb数据库,我的web应用程序在其中运行。我必须打开一些端口或配置一些东西吗?

  • 我们正在尝试使用Azure blob存储连接器从powerapps连接到blob存储。我已经检查了我在powerapps的哪个地区,这是欧洲。所以我已经将这个azure文档中的所有IP都列入了白名单,但仍然没有访问权限。屏幕错误 当我禁用blob上的防火墙时,一切正常。还有一个我丢失的IP列表?

  • 问题内容: 我正在尝试在github仓库上连接詹金斯。 当我指定Repo URL jenkins时,返回以下错误消息: 无法连接到存储库:命令“ git ls-remote -h git@github.com:adolfosrs / jenkins-test.git HEAD”返回状态码128:stdout:stderr:主机密钥验证失败。致命:无法从远程存储库读取。请确保您具有正确的访问权限,并

  • 问题-无法使用Spark Cassandra连接器1.5.0连接Cassandra 3.0 根据DataStax Spark Cassandra Connector文档,它说Spark Connector 1.5可以从Spark 1.5.0/1.6.0用于Cassandra 3.0。 你能告诉我我是不是漏掉了哪一步? 尝试的方法 在“pom.xml”中添加了单独的番石榴依赖项 提前谢了。