开发者社区 问答 正文

如何将我的Spark Dataframe推送到Google Bigquery?

我知道在StackOverflow上针对相同的问题发布了许多答案,但是我没有从任何这些中获得帮助。

我的用例是我在本地Windows计算机上运行Spark。我没有任何Hadoop集群,只有Apache Spark SQL,并从中创建了一个数据框。现在我想将此数据框推入Bigquery。

我尝试了多个库,例如Spotify-bigquery,Scaladex bigquery,但没有任何帮助。每次都会显示Hadoop异常,但是我没有安装任何Hadoop集群,也不想参与Hadoop。

我已经在代码中提供了所有内容,例如JSON密钥,存储区名称,项目ID等,但仍然无法解决。

请帮助我摆脱困境。

PS:我只想在本地Windows机器上运行代码,而不受Apache Hadoop的任何干扰。

sQLContext.setGcpJsonKeyFile( )

sQLContext.setBigQueryProjectId( )

sQLContext.setBigQueryGcsBucket( )

dataframe.saveAsBigQueryTable("test_table")

展开
收起
被纵养的懒猫 2019-09-25 15:16:55 510 分享 版权
阿里云 AI 助理回答

理解您希望在不依赖Hadoop的本地Windows环境中,直接使用Apache Spark SQL将数据框(dataframe)写入Google BigQuery。根据您的描述,您已经尝试了一些库但遇到了与Hadoop相关的异常。实际上,要实现这一目标,一个推荐的方法是使用spark-bigquery-connector,这是一个由Google官方维护的库,旨在简化Spark与BigQuery之间的数据交互,并且它不需要Hadoop环境。

以下是使用此连接器进行操作的基本步骤:

  1. 添加依赖:首先,您需要确保您的Spark环境中包含了spark-bigquery-connector。如果您使用的是Maven或SBT等构建工具,可以在项目的依赖管理文件中添加相应的依赖项。对于Scala,依赖可能如下所示(请检查最新版本):
libraryDependencies += "com.google.cloud.spark" %% "spark-bigquery-with-dependencies" % "0.22.0"

或者,如果您使用的是pyspark(Python),则可以通过以下方式安装:

pip install pyspark-bigquery
  1. 设置Google Cloud credentials:确保您已设置了Google Cloud SDK,并配置了默认的应用程序凭据(JSON密钥文件)。您可以使用gcloud auth application-default login命令来完成这一步骤。

  2. 编写代码:在您的Spark应用中,通过SparkSession配置BigQuery连接参数。以下是一个基本的示例代码段(以Scala为例):

import org.apache.spark.sql.SparkSession

val spark = SparkSession.builder
  .appName("SparkBigQueryExample")
  .config("parentProject", "<your_project_id>")
  .config("credentialsFile", "<path_to_your_json_key_file>")
  .getOrCreate()

// 假设dataframe是您要保存的数据框
val dataframe = ...

dataframe.write
  .format("bigquery")
  .option("table", "your_dataset.your_table") // 替换为您的数据集和表名
  .save()

请注意,上述代码片段中的<your_project_id><path_to_your_json_key_file>以及表名路径应替换为您自己的项目ID、JSON密钥文件路径和目标BigQuery表名。

  1. 运行应用:最后,正常运行您的Spark应用程序即可。由于您是在本地没有Hadoop的环境下操作,确保Spark能够正确识别到您的Spark配置和依赖。

这种方法避开了对Hadoop的直接依赖,仅需确保Spark环境配置得当并正确安装了必要的库。希望这能帮助您解决当前的问题!

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答