小编Nir*_*ira的帖子

并行读取S3中的多个文件(Spark,Java)

我看到了一些关于此问题的讨论,但无法理解正确的解决方案:我想将S3中的几百个文件加载到RDD中.我现在就是这样做的:

ObjectListing objectListing = s3.listObjects(new ListObjectsRequest().
                withBucketName(...).
                withPrefix(...));
List<String> keys = new LinkedList<>();
objectListing.getObjectSummaries().forEach(summery -> keys.add(summery.getKey())); // repeat while objectListing.isTruncated()

JavaRDD<String> events = sc.parallelize(keys).flatMap(new ReadFromS3Function(clusterProps));
Run Code Online (Sandbox Code Playgroud)

ReadFromS3Function不使用实际的阅读AmazonS3客户端:

    public Iterator<String> call(String s) throws Exception {
        AmazonS3 s3Client = getAmazonS3Client(properties);
        S3Object object = s3Client.getObject(new GetObjectRequest(...));
        InputStream is = object.getObjectContent();
        List<String> lines = new LinkedList<>();
        String str;
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            if (is != null) {
                while ((str = reader.readLine()) != null) {
                    lines.add(str);
                }
            } …
Run Code Online (Sandbox Code Playgroud)

java amazon-s3 apache-spark

10
推荐指数
1
解决办法
1万
查看次数

Kubernetes - 我需要在 Pod 内使用 https 进行容器通信吗?

在谷歌上搜索了一段时间,无法找到答案:假设我在一个 Pod 内有两个容器,其中一个必须向另一个容器发送一些秘密。我应该使用 https 还是通过 http 安全?如果我理解正确的话,Pod 内部的流量无论如何都会受到防火墙的保护,因此您无法窃听 Pod 外部的流量。那么...不需要 https 吗?

https networking containers kubernetes

7
推荐指数
1
解决办法
836
查看次数

Google Storage API中的死锁

我正在Dataproc上运行spark作业,该作业从存储桶中读取大量文件,并将它们合并为一个大文件。我正在google-api-services-storage 1.29.0通过阴影使用。到现在为止,它运行良好,可以合并约20-30K个文件。今天,我尝试使用大约5倍的文件进行尝试,然后突然陷入僵局(在东部,我想是我,因为似乎我的所有执行者都在无限期等待)。 在此处输入图片说明

这是线程转储:

org.conscrypt.NativeCrypto.SSL_read(Native Method)
org.conscrypt.NativeSsl.read(NativeSsl.java:416)
org.conscrypt.ConscryptFileDescriptorSocket$SSLInputStream.read(ConscryptFileDescriptorSocket.java:547) => holding Monitor(java.lang.Object@1638155334})
java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
java.io.BufferedInputStream.read(BufferedInputStream.java:345) => holding Monitor(java.io.BufferedInputStream@1513035694})
sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:735)
sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:678)
sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1587) => holding Monitor(sun.net.www.protocol.https.DelegateHttpsURLConnection@995846771})
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492) => holding Monitor(sun.net.www.protocol.https.DelegateHttpsURLConnection@995846771})
java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:347)
com.shaded.google.api.client.http.javanet.NetHttpResponse.<init>(NetHttpResponse.java:37)
com.shaded.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:105)
com.shaded.google.api.client.http.HttpRequest.execute(HttpRequest.java:981)
com.shaded.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
com.shaded.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
com.shaded.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeMedia(AbstractGoogleClientRequest.java:380)
com.shaded.google.api.services.storage.Storage$Objects$Get.executeMedia(Storage.java:6189)
com.shaded.google.cloud.storage.spi.v1.HttpStorageRpc.load(HttpStorageRpc.java:584)
com.shaded.google.cloud.storage.StorageImpl$16.call(StorageImpl.java:464)
com.shaded.google.cloud.storage.StorageImpl$16.call(StorageImpl.java:461)
com.shaded.google.api.gax.retrying.DirectRetryingExecutor.submit(DirectRetryingExecutor.java:89)
com.shaded.google.cloud.RetryHelper.run(RetryHelper.java:74)
com.shaded.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:51)
com.shaded.google.cloud.storage.StorageImpl.readAllBytes(StorageImpl.java:461)
com.shaded.google.cloud.storage.Blob.getContent(Blob.java:455)
my.package.with.my.StorageAPI.readFetchedLocation(StorageAPI.java:71)
...
Run Code Online (Sandbox Code Playgroud)

最终,我无济于事,不得不辞职。知道是什么原因造成的吗?我尝试在代码中同时使用a ThreadLocal<Storage>和单个Storage实例,这似乎没有什么区别。

java google-cloud-storage google-cloud-platform google-cloud-dataproc

5
推荐指数
1
解决办法
127
查看次数

Dataproc 依赖冲突 - google-api-client

我正在构建一个用于从云存储中获取加密机密的库(在 Scala 中,使用 Java 客户端)。我正在使用以下谷歌库:

"com.google.apis"  % "google-api-services-cloudkms" % "v1-rev26-1.23.0" exclude("com.google.guava", "guava-jdk5"),
"com.google.cloud" % "google-cloud-storage"         % "1.14.0",
Run Code Online (Sandbox Code Playgroud)

在本地一切正常,但是当我尝试在 Dataproc 中运行我的代码时,出现以下错误:

Exception in thread "main" java.lang.NoSuchMethodError: com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient$Builder.setBatchPath(Ljava/lang/String;)Lcom/google/api/client/googleapis/services/AbstractGoogleClient$Builder;
    at com.google.api.services.cloudkms.v1.CloudKMS$Builder.setBatchPath(CloudKMS.java:4250)
    at com.google.api.services.cloudkms.v1.CloudKMS$Builder.<init>(CloudKMS.java:4229)
    at gcp.encryption.EncryptedSecretsUser$class.clients(EncryptedSecretsUser.scala:111)
    at gcp.encryption.EncryptedSecretsUser$class.getEncryptedSecrets(EncryptedSecretsUser.scala:62)
Run Code Online (Sandbox Code Playgroud)

我的代码中的违规行是:

val kms: CloudKMS = new CloudKMS.Builder(credential.getTransport,
      credential.getJsonFactory,
      credential)
      .setApplicationName("Encrypted Secrets User")
      .build()
Run Code Online (Sandbox Code Playgroud)

我在文档中看到一些 google 库在 Dataproc 上可用(我使用的是映像版本为 1.2.15 的 Spark 集群)。但据我所知,google-api-client 的传递依赖与我在本地使用的依赖 (1.23.0) 相同。那么怎么找不到方法呢?

我是否应该为在 Dataproc 上运行设置不同的依赖项?

编辑

最后设法在另一个项目中解决了这个问题。事实证明,除了对所有 google 依赖项(包括 gcs-connector !!)进行着色之外,您还必须向 JVM 注册着色类以处理 gs:// 文件系统。下面是适用于我的 maven 配置,使用 sbt 可以实现类似的功能:

父 POM: …

java scala google-cloud-storage google-cloud-dataproc google-cloud-kms

1
推荐指数
1
解决办法
1874
查看次数