如何从EMR连接到GCS

时间:2019-02-28 11:44:37

标签: scala apache-spark google-cloud-platform amazon-emr

我们有一个在EMR集群上运行的Spark流媒体应用程序,我们需要以实木复合地板格式将流数据存储到Google Cloud Storage。

请任何人帮助我。

3 个答案:

答案 0 :(得分:0)

我不确定您如何处理EMR中的流数据。无论如何,您始终可以使用Google库拥有自定义的python脚本,以连接到GCS并将数据推送到GCS。您还可以选择将脚本作为pyspark代码运行,以加快流程

https://cloud.google.com/appengine/docs/standard/python/googlecloudstorageclient/read-write-to-cloud-storage

答案 1 :(得分:0)

此有关从Amazon S3迁移到Cloud Storage的Google Cloud官方指南可能会有所帮助:

https://cloud.google.com/storage/docs/migrating

我的最后一个答案已被删除,请至少分享删除它的原因。谢谢。

答案 2 :(得分:0)

要在 EMR 上使用 spark 连接到 Google 云存储 (GCS),您需要在应用程序 jar 中包含 Google 云存储连接器。您还可以在 EMR 集群上的 hadoop 类路径中添加 jar。最快、最简单的方法是将 GCS 连接器捆绑在您的应用程序 jar 中。

您可以在此处获取 google 云存储连接器:

<块引用>

https://cloud.google.com/dataproc/docs/concepts/connectors/cloud-storage

它具有用于 hadoop 1.x、2.x 和 3.x 的连接器。

获得 jar 后,在 Spark 应用程序中添加以下属性

SparkConf sparkConf = new SparkConf();
        sparkConf.set("spark.hadoop.google.cloud.auth.service.account.enable", "true");
        sparkConf.set("spark.hadoop.google.cloud.auth.service.account.json.keyfile", "<path to your google cloud key>");
        SparkSession spark = SparkSession.builder()
                .appName("My spark application")
                .config(sparkConf)
                .getOrCreate();
        spark.sparkContext().hadoopConfiguration().set("fs.AbstractFileSystem.gs.impl","com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS");
        spark.sparkContext().hadoopConfiguration().set("fs.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem");

您可以使用简单的引导操作脚本将 GCP 密钥放在 EMR 集群上,该脚本将密钥从 s3 位置复制到本地路径。

将云存储连接器 jar 与您的应用程序捆绑在一起,现在您可以使用“gs”文件系统进行读/写。

我在 EMR 6.3.0 上使用了 Hadoop 3.x 和 spark 3.x。