Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >云函数在GCP中的调用

云函数在GCP中的调用
EN

Stack Overflow用户
提问于 2021-06-09 17:06:43
回答 1查看 103关注 0票数 1

我想创建一个云函数(HTTP)来在Gcp DataProc集群中提交spark作业。我创建了一个示例微服务,并通过以下链接实现了这一点。How do you use the Google DataProc Java Client to submit spark jobs using jar files and classes in associated GS bucket?。现在我想在gcp云函数服务方法中实现同样的方法。这是我的微服务中的代码:

代码语言:javascript
运行
AI代码解释
复制
public static void main(String a[]) throws IOException {

GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream("My credential file location")).createScoped(
            java.util.Arrays.asList("https://www.googleapis.com/auth/cloud-platform"));
Dataproc dataproc = new Dataproc.Builder(new NetHttpTransport(), new JacksonFactory(), credential)
    .setApplicationName("my-webabb/1.0")
    .build();
String curJobId = "spark-job-" + UUID.randomUUID().toString();
Job jobSnapshot = null;
jobSnapshot = dataproc.projects().regions().jobs().submit(
                "gcp-project-name", "cluster-region", new SubmitJobRequest()
                    .setJob(new Job()
                        .setReference(new JobReference()
                            .setJobId(curJobId))
                        .setPlacement(new JobPlacement()
                            .setClusterName("cluster-name"))
                        .setSparkJob(new SparkJob()
                            .setMainClass("MainMethod")
                            .setJarFileUris(ImmutableList.of("jarfilelocation"))
                            )))
                .execute();
}

在执行此代码时,将在该集群中创建作业。这很好。但我的疑问是,如果我想在云函数中执行同样的步骤,我需要通过什么凭证?如果我将云功能和集群都放在同一个网络中,它可以在没有凭据的情况下工作。但是,是否可以在下面的代码中创建一个没有凭据的dataproc

代码语言:javascript
运行
AI代码解释
复制
Dataproc dataproc = new Dataproc.Builder(new NetHttpTransport(), new JacksonFactory(), credential)
    .setApplicationName("my-webabb/1.0")
    .build();

我也试着用

代码语言:javascript
运行
AI代码解释
复制
        <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>google-cloud-dataproc</artifactId>
            <version>1.5.2</version>
        </dependency>

这是代码

代码语言:javascript
运行
AI代码解释
复制
public static void main(String a[])
        throws IOException, InterruptedException {
        String myEndpoint = String.format("%s-dataproc.googleapis.com:443", "us-central1");
        // Configure the settings for the job controller client.
        JobControllerSettings jobControllerSettings =
            JobControllerSettings.newBuilder().setEndpoint(myEndpoint).build();

        // Create a job controller client with the configured settings. Using a try-with-resources
        // closes the client,
        // but this can also be done manually with the .close() method.
        try (JobControllerClient jobControllerClient =
                 JobControllerClient.create(jobControllerSettings)) {

            // Configure cluster placement for the job.
            JobPlacement jobPlacement = JobPlacement.newBuilder().setClusterName("myclusterName").build();


            // Configure Spark job settings.
            SparkJob sparkJob =
                SparkJob.newBuilder()
                    .setMainClass("mymain")
                    .addJarFileUris("myJarFile")
                    .build();

            Job job =
                Job.newBuilder().setPlacement(jobPlacement).setSparkJob(sparkJob).build();

            // Submit an asynchronous request to execute the job.
            OperationFuture<Job, JobMetadata> submitJobAsOperationAsyncRequest =
                jobControllerClient.submitJobAsOperationAsync("myProjectId", "us-central1", job);

            Job response = submitJobAsOperationAsyncRequest.get();

            // Print output from Google Cloud Storage.
            Matcher matches =
                Pattern.compile("gs://(.*?)/(.*)").matcher(response.getDriverOutputResourceUri());
            matches.matches();

        } catch (ExecutionException e) {
            // If the job does not complete successfully, print the error message.
            System.err.println(String.format("submitJob: %s ", e.getMessage()));
        }
    }

在上面的依赖中,我不能设置jobId。如何使用它设置JobId?

有没有人能建议一些可行的方法呢?

提前感谢:)

EN

回答 1

Stack Overflow用户

发布于 2021-06-13 18:40:56

实际上,您可以在将作业ID提交到dataproc集群时设置作业ID。您可以在the dataproc API中找到它。如果您仔细查看要在参数中设置的Job object

在这里,您有一个作业UUID。注释很清楚:仅输出,使用reference.job_id设置作业ID

好的,转到reference object,您可以定义一个JobID和一个项目ID。

现在,让我们对库执行此操作:在作业对象中,添加一个具有项目ID和作业ID的引用对象。

代码语言:javascript
运行
AI代码解释
复制
Job job = Job.newBuilder().setReference(
   JobReference.newBuilder().setJobId("123").setProjectId("myProjectId").build())
  .setPlacement(jobPlacement).setSparkJob(sparkJob).build();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67908728

复制
相关文章
函数在栈中的调用过程
栈是一种线性存储的数据结构,向下增长。其存在栈底和栈顶,栈对其中的数据元素有进栈和出栈的操作,遵循‘First In last Out’即FILO原则。
Elapse
2020/08/17
4.1K0
Go语言在模版中调用函数
如果希望调用自定义函数,需要借助html/template包下的FuncMap进行映射
IT工作者
2022/03/31
2.9K0
腾讯云函数在开发中的实践
腾讯云函数在它的帮助文档里面有已经提到了它的几个具体实践,通过管中窥豹,我也来谈谈在具体业务中的几个实践。
槽痞
2020/09/20
2.9K0
在ctypes的C共享库中调用Python函数
ctypes 是Python标准库中提供的外部函数库,可以用来在Python中调用动态链接库或者共享库中的函数,比如将使用大量循环的代码写在C语言中来进行提速,因为Python代码循环实在是太慢了。大致流程是通过 ctypes 来调用C函数,先将Python类型的对象转换为C的类型,在C函数中做完计算,返回结果到Python中。这个过程相对是比较容易的。
王云峰
2023/10/23
5710
使用 kubeadm 在 GCP 部署 Kubernetes
最近在准备 CKA 考试,所以需要搭建一个 Kubernetes 集群来方便练习.GCP 平台新用户注册送 300 刀体验金,所以就想到用 kubeadm 在 GCP 弄个练练手,既方便又省钱.
用户2443625
2019/01/02
2.3K0
在vue中的html标签{{}}内可以调用函数方法
今天领导提个需求,要求在金额上强制保留两位小数,本想着后台直接返回数据时,带着两位的小数,前端只是做个显示作用,后台说保留了小数但在传输过程中去掉了,可能他们做了格式转化。没办法了只能又是我们前端操作了,牵扯价钱的太多了,很多时候又有for 循环,怎么办呢?
honey缘木鱼
2019/02/26
31.1K0
虚函数中构造函数的调用顺序
1 /*曾经有段时间一直被构造函数中的虚函数所困扰,现在通过自己重新学习了一遍,标注一下容易忘记的知识*/ 2 #include<iostream> 3 using namespace std; 4 class Base0 5 { 6 public: 7 Base0(int var):var0(var) 8 { 9 cout<<"Construct base0"<<endl; 10 } ; 11 int var0; 12 void fun()
Gxjun
2018/03/22
3.7K0
虚函数中构造函数的调用顺序
Mybatis中调用mysql的函数
<select id="getSpellFull" parameterType="java.lang.String" resultType="java.lang.String"> SE
qubianzhong
2018/09/19
8.7K0
Mybatis中调用mysql的函数
禁止在构造函数里调用虚函数
在构造函数中调用虚函数会导致程序出现莫名其妙的行为,这主要是对象还没有完全构造完成。下面我们先来看一段代码:
喵叔
2020/09/08
1.7K0
VC 在调用main函数之前的操作
title: VC 在调用main函数之前的操作 tags: [VC++, 反汇编, C++实现原理] date: 2018-09-16 10:36:23 categories: VC++反汇编分析 keywords: VC++, 反汇编, C++实现原理, main函数调用, VC 运行环境初始化 --- 在C/C++语言中规定,程序是从main函数开始,也就是C/C++语言中以main函数作为程序的入口,但是操作系统是如何加载这个main函数的呢,程序真正的入口是否是main函数呢?本文主要围绕这个主题,通过逆向的方式来探讨这个问题。本文的所有环境都是在xp上的,IDE主要使用IDA 与 VC++ 6.0。为何不选更高版本的编译器,为何不在Windows 7或者更高版本的Windows上实验呢?我觉得主要是VC6更能体现程序的原始行为,想一些更高版本的VS 它可能会做一些优化与检查,从而造成反汇编生成的代码过于复杂不利于学习,当逆向的功力更深之后肯定得去分析新版本VS 生成的代码,至于现在,我的水平不够只能看看VC6 生成的代码 首先通过VC 6编写这么一个简单的程序
Masimaro
2018/10/10
2.2K0
VC 在调用main函数之前的操作
C语言在ARM中函数调用时,栈是如何变化的?
为什么会写篇栈变化的文章?做系统分析的话你肯定遇到过一些crash, oops等棘手问题,一般大家都会用 gdb, objdump 或者 addr2line等工具分析 pc 位置来定位出错的地方。但是这些分析工具背后的本质原理就不见得理解深刻了,而且有的时候面对一系列 backtrace 或者 stack 日志处于懵逼的状态。
刘盼
2020/03/04
14.4K2
C语言在ARM中函数调用时,栈是如何变化的?
在 Node 中调用 Python
在 Node 中如何调用 Python 的方法?通常可以通过 REST 接口或者 RPC 的方式来完成,但是某些时候我们仅仅只需要调用对方几个很简单的方法,这种情况下去构建一个提供 REST 接口的服务或者两者对接实现 RPC 调用,这种做法的成本显然有点高。本文将会介绍一种更轻量的调用方式。
凌虚
2020/07/17
5.8K0
在Java中调用Python
在微服务架构大行其道的今天,对于将程序进行嵌套调用的做法其实并不可取,甚至显得有些愚蠢。当然,之所以要面对这个问题,或许是因为一些历史原因,或者仅仅是为了简单。恰好我在项目中就遇到了这个问题,需要在Java程序中调用Python程序。关于在Java中调用Python程序的实现,根据不同的用途可以使用多种不同的方法,在这里就将在Java中调用Python程序的方式做一个总结。
编程随笔
2019/09/11
5.2K0
在Java中调用Python
【玩转腾讯云】让NuxtSSR在云函数中飞起来
我们以往部署Nuxt到服务器需要pm2进行进程管理,还需要考虑到服务器的性能,负载均衡、网络安全等一系列运维问题。往往我们做的却不是最优的,那么为什么我们不将它交给专业运维的人去配置呢?
XaDon
2020/04/22
2K0
【玩转腾讯云】让NuxtSSR在云函数中飞起来
怎么在sequence中调用agent中的函数以及如何快速实验你的想法?
通过本篇文章主要想送给广大验证初学者和爱好者2件礼物:“一条鱼”和“一只鱼竿”。希望大家连吃带拿,开开心心地。
IC验证
2021/09/10
2.9K0
在Android中调用WebService
某些情况下我们可能需要与Mysql或者Oracle数据库进行数据交互,有些朋友的第一反应就是直接在Android中加载驱动然后进行数据的增删改查。我个人不推荐这种做法,一是手机毕竟不是电脑,操作大量数据费时费电;二是流量贵如金那。我个人比较推荐的做法是使用Java或PHP等开发接口或者编写WebService进行数据库的增删该查,然后Android调用接口或者WebService进行数据的交互。本文就给大家讲解在Android中如何调用远程服务器端提供的WebService。 既然是调用WebService
全栈程序员站长
2022/07/05
2K0
在cuda的核函数中可以按地址调用普通变量么?
请问在cuda的核函数中可以按地址调用普通变量么? GPU世界论坛 bbs.gpuworld.cn Hi, 楼主, 完全无问题,从Fermi起引入卡内统一编址(Generic Addressing)和卡间统一编址(UVA ) 开始,就毫无压力了,这都8年过去了。 但需要注意这个问题: (1)最终指向global memory地址空间的指针,可以在本次kernel启动,或者下次kernel启动的任何线程中都是有效的。 (2)最终指向local memory的指针,仅在本次kernel启动的本线程
GPUS Lady
2018/04/13
3.3K0
在Android中调用WebService
某些情况下我们可能需要与Mysql或者Oracle数据库进行数据交互,有些朋友的第一反应就是直接在Android中加载驱动然后进行数据的增删改查。我个人不推荐这种做法,一是手机毕竟不是电脑,操作大量数据费时费电;二是流量贵如金那。我个人比较推荐的做法是使用Java或PHP等开发接口或者编写WebService进行数据库的增删该查,然后Android调用接口或者WebService进行数据的交互。本文就给大家讲解在Android中如何调用远程服务器端提供的WebService。 既然是调用WebService
欢醉
2018/01/22
2.4K0
js中匿名函数自调用
* 全称: Immediately-Invoked Function Expression 立即调用函数表达式
李才哥
2020/03/28
5.7K0
【MYSQL函数】MYSQL中IF函数在where中的使用
WHERE IF(条件, true执行条件, false执行条件) 业务需求: 查询SUPPLIER_CLASS=0 and tp1.`TYPE_FLAG` = 1 或者 SUPPLIER_CLASS=1 实现有两种:
用户5640963
2019/07/25
12.7K0

相似问题

GCP云函数双函数调用

115

如何从GCP云函数调用GCP数据存储?

20

无法在GCP中创建云函数

12

无法在GCP中创建云函数

18

从外部web钩子调用GCP云函数

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档