You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery创建PySpark存储过程报FROM语法错误,求原因排查

问题排查与解决方案

错误原因

你在定义PySpark存储过程时,错误使用了R语言的字符串分隔符R"""来包裹Python代码。BigQuery的SQL解析器会将R"""识别为无效SQL语法,进而把后续Python代码里的from关键字当成SQL语句的一部分,触发语法错误。

修正后的代码

将LANGUAGE PYTHON AS R"""替换为LANGUAGE PYTHON AS """即可解决问题,修正后的完整代码如下:

CREATE OR REPLACE PROCEDURE my_bq_project.my_dataset.spark_proc()
WITH CONNECTION `my-project-id.us.my-connection`
OPTIONS(engine="SPARK", runtime_version="1.1")
LANGUAGE PYTHON AS """
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("spark-bigquery-demo").getOrCreate()

# Load data from BigQuery.
words = spark.read.format("bigquery") \
  .option("table", "bigquery-public-data:samples.shakespeare") \
  .load()
words.createOrReplaceTempView("words")

# Perform word count.
word_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed("sum(word_count)", "sum_word_count")
word_count.show()
word_count.printSchema()

# Saving the data to BigQuery
word_count.write.format("bigquery") \
  .option("writeMethod", "direct") \
  .save("wordcount_dataset.wordcount_output")
"""

额外注意事项

  • 确保my-project-id.us.my-connection是已创建的有效Spark连接,且具备访问BigQuery公共数据集和写入目标数据集的权限;
  • 确认目标数据集wordcount_dataset已存在,若不存在需提前创建;
  • 若使用的是较新版本的BigSpark runtime,可适当调整runtime_version参数值。

内容的提问来源于stack exchange,提问作者ohh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 10:25:14