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