我正在App Engine中使用一个小型webapp,使用Angular作为前端.我查看了Google Cloud Endpoints的文档,但是我很难找到比编写返回JSON的普通处理程序更大的优势.以下是我发现的优点:
另一方面,指定端点的语法有点难看(与在webapp2,flask等中指定请求处理程序相比).有没有我错过的优势或我不预测的挑战?如果没有,Cloud Endpoints有什么意义?
我正在使用Google Cloud Storage JSON API插入图片,如此示例所示,需要与读取权限一起公开共享.HTTP请求如下所示:
var request = gapi.client.request({
'path': '/upload/storage/v1beta2/b/' + BUCKET + '/o',
'method': 'POST',
'params': {'uploadType': 'multipart'},
'headers': {'Content-Type': 'multipart/mixed; boundary="' + boundary + '"'},
'body': multipartRequestBody});
Run Code Online (Sandbox Code Playgroud)
我的存储桶已经拥有"所有用户"的"读者"权限,但插入的对象不会继承该属性.在点击"公开共享"复选框之后,拒绝URL拒绝访问. http://commondatastorage.googleapis.com/bucketname%2Ffilename
我需要在插入后立即使用这些图像.有没有办法分享作为HTTP插入请求的一部分?
考虑以下情况:
我有一个带有以下ACL的云存储桶:
<?xml version="1.0" ?>
<AccessControlList>
<Owner>
<ID>id-of-the-user-who-created-the-bucket</ID>
</Owner>
<Entries>
<Entry>
<Scope type="UserByEmail">
<EmailAddress>app-A-service-account-name</EmailAddress>
</Scope>
<Permission>FULL_CONTROL</Permission>
</Entry>
<Entry>
<Scope type="UserByEmail">
<EmailAddress>app-B-service-account-name</EmailAddress>
</Scope>
<Permission>FULL_CONTROL</Permission>
</Entry>
</Entries>
</AccessControlList>
Run Code Online (Sandbox Code Playgroud)我的GAE应用程序是用Python编写的,他们使用的是GCS Client Library
现在,这就是我想要实现的目标:我希望应用程序A在存储桶中创建文件,然后应用程序B来读取它们.
起初我尝试简单地创建一个文件,cloudstorage.open(file_name, 'w')然后用它读取它的状态cloudstorage.stat(file_name, 'r'),但这样我在阅读时最终会出现以下错误:
ForbiddenError at /.../
Expect status [200] from Google Storage. But got status 403.
Run Code Online (Sandbox Code Playgroud)
(错误消息还提供请求/响应信息:路径,标题,正文和额外信息.如果您认为它们可能有助于解决此案例,请告诉我)
然后我通过x-googl-acl在创建文件时设置选项来开始试验ACL ,例如:
cloudstorage.open(file_name, 'w', options={'x-goog-acl': 'authenticated-read'})
Run Code Online (Sandbox Code Playgroud)
尽管ACL按预期工作,但可用的选项似乎都不符合我的要求:
private - 只有存储桶拥有者具有访问权限,B无法读取public-read - 匿名用户可以访问文件,这是不可接受的public-read-write - 与上述相同authenticated-read - 每个拥有经过身份验证的帐户的人都能够阅读(即使是不属于该项目的人),所以它与之前的选项没有什么不同bucket-owner-read - 看起来很完美,但事实证明"桶主"不是通过云控制台设置为"所有者"的用户,而是创建存储桶的用户bucket-owner-full-control - …google-app-engine google-cloud-storage google-compute-engine google-cloud-platform
我有一个如下所示的数据框。我需要根据现有列创建一个新列。
col1 col2
a 1
a 2
b 1
c 1
d 1
d 2
Run Code Online (Sandbox Code Playgroud)
输出数据帧看起来像这样
col1 col2 col3 col4
a 1 1 2
a 2 1 2
b 1 0 1
c 1 0 1
d 1 1 2
d 2 1 2
Run Code Online (Sandbox Code Playgroud)
我用来查找 col3 的逻辑是如果 col1 > 1且col4的计数是 col2 的最大值。
我熟悉如何在 sql 中执行此操作。但很难找到 Dataframe DSL 的解决方案。任何帮助,将不胜感激。谢谢
我们正在使用基于队列的托管实例扩展。我们需要按实例组在虚拟机上设置环境变量(以便可以使用相同的虚拟机映像来订阅不同实例组中的不同队列)。创建实例组时,我没有看到\xe2\x80\x99t 定义环境变量的选项。
\n\n有没有办法在多个实例组中使用相同的映像,并且仍然根据实例组级别的不同环境变量或其他方式实现不同的虚拟机行为?
\n\n示例:使用相同的 VM 映像创建 2 个托管实例组。一个将环境变量“queue-name”设置为“queue-1”,另一个将“queue-name”设置为“queue-2”。部署到第一个实例组中的虚拟机的应用程序从发布/订阅队列“queue-1”中提取任务,而在其他组中从“queue-1”中提取任务。
\ngoogle-compute-engine google-cloud-platform google-kubernetes-engine gce-instance-group
我有一个只有一栏的CSV文件,行定义如下:
123 || food || fruit
123 || food || fruit || orange
123 || food || fruit || apple
Run Code Online (Sandbox Code Playgroud)
我想用一个单列和不同的行值创建一个csv文件:
orange
apple
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下代码:
val data = sc.textFile("fruits.csv")
val rows = data.map(_.split("||"))
val rddnew = rows.flatMap( arr => {
val text = arr(0)
val words = text.split("||")
words.map( word => ( word, text ) )
} )
Run Code Online (Sandbox Code Playgroud)
但是这段代码并没有给我想要的正确结果。
有人可以帮我吗?