Tag: 谷歌云平台

Google Cloud Dataflow BigQueryIO.Write发生未知错误(http代码500)

有人问我谷歌云数据流BigQueryIO.Write发生未知错误(http代码500)吗? 我在4月,5月,6月使用Dataflow处理一些数据,我使用相同的代码处理4月数据(400MB)并写入BigQuery成功,但是当我处理May(60MB)或June(90MB)数据时,它失败了。 4月,5月和6月的数据格式相同。 将作者从BigQuery改为TextIO,工作会成功,所以我认为数据格式是好的。 日志仪表板没有任何错误日志….. 系统只有同样的未知错误 我写的代码在这里: http : //pastie.org/10907947 “执行BigQuery导入作业”后出现错误消息: Workflow failed. Causes: (cc846): S01:Read Files/Read+Window.Into()+AnonymousParDo+BigQueryIO.Write/DataflowPipelineRunner.BatchBigQueryIOWrite/DataflowPipelineRunner.BatchBigQueryIONativeWrite failed., (e19a27451b49ae8d): BigQuery import job “dataflow_job_631261” failed., (e19a745a666): BigQuery creation of import job for table “hi_event_m6” in dataset “TESTSET” in project “lib-ro-123” failed., (e19a2749ae3f): BigQuery execution failed., (e19a2745a618): Error: Message: An internal error occurred and the request could […]

在Dataflow Generic中进行转换

这与另一个SO问题[此处]( 设置自定义编码器和处理参数化类型 )有关。在解决方法之后,帮助我在变换中使用自定义类型。 但由于我的自定义类型是通用的,我希望甚至使变换类通用,然后可以使用相同的类型参数化自定义类型。 但是当我尝试这样做时,我遇到了无法为类型变量T提供编码器,因为实际类型由于擦除而未知 。 解决方案建议注册一个可以返回类型参数的编码器,但由于类型参数本身是未知的,我想这个exception会抛出,我不知道如何解决这个问题。 static class Processor extends PTransform<PCollection, PCollection<KV<String, Set<CustomType>>>> { private static final long serialVersionUID = 0; @Override public PCollection<KV<String, Set<CustomType>>> apply(PCollection items) { PCollection<KV<String, Set<CustomType>>> partitionedItems = items .apply(ParDo.of(new ParDoFn())); PCollection<KV<String, Set<CustomType>>> combinedItems = partitionedItems .apply(Combine.<String, Set<CustomType>>perKey(new Merger())); } }

从Android访问云存储

我一直无法找到有关如何从Android应用程序使用云存储的任何具体文档。 我确实遇到了来自Google Cloud SDK的这个客户端库 ,但是遇到了很多很多问题并且还没有让它运行起来。 我在上面的链接中添加了以下代码: build.gradle : compile group: ‘com.google.cloud’, name: ‘google-cloud-storage’, version: ‘0.9.3-beta’ 然后我添加了一些简单的代码,虽然这与这个问题并不相关,因为我已经能够运行我的应用程序并添加了上面的依赖项: 在活动中: Storage storage = StorageOptions.getDefaultInstance().getService(); Page buckets = storage.list(); Iterator bucketIterator = buckets.iterateAll(); while (bucketIterator.hasNext()) { Bucket bucket = bucketIterator.next(); Log.d(TAG, “Bucket name: ” + bucket.getName()); } 解决了无数的依赖问题(与Joda冲突,Netty, DuplicateFileException来自gradle等)我能够构建项目,尽管有以下错误: Warning:WARNING: Dependency org.apache.httpcomponents:httpclient:4.0.1 is ignored for debug as it may […]

为Google Cloud Storage API提供凭据

我正在尝试组建一个用于测试Google云端存储的hello world程序。 我的目标是拥有一个最简单的程序,只需将硬编码文件上传到云存储。 我一直在互联网上搜索基础教程,但我能找到的最接近的是从App Engine使用云存储的指南 。 我把这个程序放在一起: import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Arrays; import com.google.cloud.storage.Acl; import com.google.cloud.storage.Acl.Role; import com.google.cloud.storage.Acl.User; import com.google.cloud.storage.BlobInfo; import com.google.cloud.storage.Storage; import com.google.cloud.storage.StorageOptions; public class Main { public static void main(String[] args) throws FileNotFoundException{ FileInputStream fileInputStream = new FileInputStream(“my-file.txt”); Storage storage = StorageOptions.getDefaultInstance().getService(); BlobInfo blobInfo = storage.create( BlobInfo .newBuilder(“my-cloud-storage-bucket”, “my-file.txt”) .setAcl(new […]

如何从Cassandra增加Dataflow读取并行性

我试图将大量数据(2 TB,30kkk行)从Cassandra导出到BigQuery。 我的所有基础设施都在GCP上。 我的Cassandra集群有4个节点(4个vCPU,26 GB内存,每个2000 GB PD(HDD))。 集群中有一个种子节点。 我需要在写入BQ之前转换我的数据,所以我使用的是Dataflow。 工人类型是n1-highmem-2 。 工人和Cassandra实例位于同一区域europe-west1-c 。 我对Cassandra的限制: 我负责读取转换的部分管道代码位于此处 。 自动缩放 问题是,当我没有设置–numWorkers ,以这种方式自动调整工人数量(平均2名工人): 负载均衡 当我设置–numWorkers=15 ,读取速率不会增加,只有2名工作人员与Cassandra通信(我可以从iftop告诉它,只有这些工作人员的CPU负载大约为60%)。 同时,Cassandra节点没有很多负载(CPU使用率为20-30%)。 种子节点的网络和磁盘使用率比其他节点大约高2倍,但不是太高,我认为: 对于非种子节点: 管道发射警告 管道启动时我有一些警告: WARNING: Size estimation of the source failed: org.apache.beam.sdk.io.cassandra.CassandraIO$CassandraSource@7569ea63 com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /10.132.9.101:9042 (com.datastax.driver.core.exceptions.TransportException: [/10.132.9.101:9042] Cannot connect), /10.132.9.102:9042 (com.datastax.driver.core.exceptions.TransportException: [/10.132.9.102:9042] Cannot connect), /10.132.9.103:9042 (com.datastax.driver.core.exceptions.TransportException: […]

将嵌套的BigQuery数据导出到云存储

我试图通过API将bigquery数据导出到谷歌云存储桶。 我从这里改编了代码片段https://cloud.google.com/bigquery/docs/exporting-data Job job = table.extract(format, gcsUrl); // Wait for the job to complete try { Job completedJob = job.waitFor(WaitForOption.checkEvery(1, TimeUnit.SECONDS), WaitForOption.timeout(3, TimeUnit.MINUTES)); if (completedJob != null && completedJob.getStatus().getError() == null) { // Job completed successfully } else { // Handle error case System.out.println(completedJob.getStatus().getError()); } } catch (InterruptedException | TimeoutException e) { // Handle interrupted […]

NoSuchMethodError:com.google.common.base.Preconditions.checkArgument(ZLjava / lang / String; J)V

Google Maven依赖项可以解决此错误: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V at com.google.cloud.storage.spi.v1.HttpStorageRpc.read(HttpStorageRpc.java:487) at com.google.cloud.storage.BlobReadChannel$1.call(BlobReadChannel.java:127) at com.google.cloud.storage.BlobReadChannel$1.call(BlobReadChannel.java:124) at com.google.api.gax.retrying.DirectRetryingExecutor.submit(DirectRetryingExecutor.java:94) at com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:54) at com.google.cloud.storage.BlobReadChannel.read(BlobReadChannel.java:124) at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:65) at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:109) at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:103) at java.io.InputStream.read(InputStream.java:101) 码: Blob blob = storage.get(blobId); if(blob.exists()) { return true; }

限制App Engine对自定义域上的G Suite帐户的访问权限

不久之前,Google Apps(现在称为G Suite)域的App Engine相关设置已移至Google Cloud Console。 截至目前,已记录的限制对相关G Suite用户访问App Engine实例的方法是通过此Google Cloud Console页面: 当您点击该页面中的[编辑]时,在“Google身份validation”下,您可以在“Google帐户API”和“Google Apps域”(实际上应该称为“G Suite域”)之间切换。 该下拉列表下方有一个输入框,但没有解释应该在那里输入什么。 通过反复试验,我发现它应该是相关G Suite的域名。 在部署到App Engine的最小Hello World应用程序中,我们将身份validation选项设置为: login: required 请注意,我们的应用程序的一些服务是用Python编写的,有些是用Java编写的。 通过[project-id] .appspot.com主机名访问App引擎实例工作正常,Google将提示相关G Suite上的凭据,并通过身份validation过程适当地重定向到目标路径名。 问题是,当通过自定义域访问App Engine实例时,身份validation根本不起作用。 这将显示500,服务器日志显示为: 只有在通过该域的子域提供请求或已通过Google Apps控制台批准请求时,才能执行Google Apps域example.com的身份validation。 请参阅https://developers.google.com/appengine/articles/auth 该错误消息中的链接页面不再存在,即它已被替换为一般描述身份validation的页面。 从在线缓存中提取旧页面,我可以看到它描述了将Google App引擎项目添加到Google Apps服务页面的旧Google Apps方式,但截至目前,此function已被删除或迁移到Google Cloud Console。 对于它的价值,谷歌支持无法提供任何帮助,除了指向上面截屏页面的文档。 这里是否有人设法通过自定义域限制App Engine访问G Suite帐户? 或者这个function刚刚破裂? 特别是我正在寻找在Python和/或Java GAE应用程序环境中解决此问题的答案,以及演示如何在需要时以编程方式解决此问题的代码。

无法在Google App Engine上部署Java项目

我在Google App Engine上创建了一个项目,我无法使用项目ID部署项目:“我的项目ID” 以下是发生问题的详细信息: 您选择的应用ID“我的项目ID”不存在。 转到http://cloud.google.com/console查看现有应用ID或创建新的应用ID。 无法更新应用:错误发布到url: https ://appengine.google.com/api/appversion/create?app_id =“我的项目ID”&版本= 1&404未找到此应用程序不存在(project_id = u’my项目ID’)。 要在此项目中创建App Engine应用程序,请在控制台中运行“gcloud beta app create”。 有人面临这个问题吗? 旧项目工作正常,我可以部署这些项目。 问题仅出现在新创建的项目中。