在 apache spark 中组合来自不同来源的数据

combining data from different sources in apache spark

我正在为一个项目探索 apache spark,我想在该项目中从不同来源获取数据 - 数据库 tables(postgres 和 BigQuery)和文本。数据将被处理并送入另一个 table 进行分析。我选择的编程语言是 Java,但我正在探索 Python too.Can 有人请告诉我是否可以直接将其读入 spark 进行处理?我是否需要数据库 tables 和 Spark 集群之间的某种连接器。

提前致谢。

您可以使用 jdbc 连接到 rdbms。 Spark 也有用于 BigQuery 的连接器。分别从所有源读入数据帧并在最后合并(假设所有源都具有相同的数据格式)

pyspark 的示例伪代码:

df1=spark.read.json("s3://test.json") df2 = sqlContext.read.format("jdbc").option("url", "jdbc:mysql://xxxx").option("driver", "com.mysql.jdbc.Driver").option("table", "name").option("user", "user").option("password", "password").load()

结果 = df1.union(df2)

例如,如果您想从 BigQuery table 中读取内容,您可以通过这些指令(例如 Python)来完成:

words = spark.read.format('bigquery') \
   .option('table', 'bigquery-public-data:samples.shakespeare') \
   .load()

你可以参考这篇文档[1](这里你也可以看到Scala的使用说明)。

***我建议先尝试 wordcount 代码以熟悉使用模式****

在那之后,您已经准备好 Spark 代码,您必须在 Google Dataproc [2] 和 运行 那里创建一个新集群,链接 BigQuery 连接器(例如 python):

gcloud dataproc jobs submit pyspark wordcount.py \
   --cluster cluster-name \
   --region cluster-region (example: "us-central1") \
   --jars=gs://spark-lib/bigquery/spark-bigquery-latest.jar

在这里您可以找到最新版本的 BigQuery 连接器 [3]。

此外,在此 GitHub 存储库中,您可以找到一些有关如何将 BigQuery 连接器与 Spark [4] 结合使用的示例。

通过这些说明,您应该能够处理读取和写入 BigQuery。

[1] https://cloud.google.com/dataproc/docs/tutorials/bigquery-connector-spark-example#running_the_code

[2]https://cloud.google.com/dataproc/docs/guides/create-cluster

[3] gs://spark-lib/bigquery/spark-bigquery-latest.jar

[4]https://github.com/GoogleCloudDataproc/spark-bigquery-connector