-3

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

提前致谢。

4

2 回答 2

0

例如,如果您想从 BigQuery 表中读取内容,您可以通过以下说明来完成(例如 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

于 2020-01-17T08:30:13.257 回答
-1

您可以使用 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)

于 2020-01-16T22:45:20.123 回答