我知道在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")
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
理解您希望在不依赖Hadoop的本地Windows环境中,直接使用Apache Spark SQL将数据框(dataframe)写入Google BigQuery。根据您的描述,您已经尝试了一些库但遇到了与Hadoop相关的异常。实际上,要实现这一目标,一个推荐的方法是使用spark-bigquery-connector
,这是一个由Google官方维护的库,旨在简化Spark与BigQuery之间的数据交互,并且它不需要Hadoop环境。
以下是使用此连接器进行操作的基本步骤:
spark-bigquery-connector
。如果您使用的是Maven或SBT等构建工具,可以在项目的依赖管理文件中添加相应的依赖项。对于Scala,依赖可能如下所示(请检查最新版本):libraryDependencies += "com.google.cloud.spark" %% "spark-bigquery-with-dependencies" % "0.22.0"
或者,如果您使用的是pyspark(Python),则可以通过以下方式安装:
pip install pyspark-bigquery
设置Google Cloud credentials:确保您已设置了Google Cloud SDK,并配置了默认的应用程序凭据(JSON密钥文件)。您可以使用gcloud auth application-default login
命令来完成这一步骤。
编写代码:在您的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表名。
这种方法避开了对Hadoop的直接依赖,仅需确保Spark环境配置得当并正确安装了必要的库。希望这能帮助您解决当前的问题!