我们有一个在EMR集群上运行的Spark流媒体应用程序,我们需要以实木复合地板格式将流数据存储到Google Cloud Storage。
请任何人帮助我。
答案 0 :(得分:0)
我不确定您如何处理EMR中的流数据。无论如何,您始终可以使用Google库拥有自定义的python脚本,以连接到GCS并将数据推送到GCS。您还可以选择将脚本作为pyspark代码运行,以加快流程
答案 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。