如何在BigQuery中显示调用Apache Spark的存储过程输出?
在BigQuery WebUI中查看Spark存储过程的DataFrame输出
- 利用Spark日志输出捕获内容
BigQuery的Spark存储过程不会直接把df.printSchema()或df.show()的输出展示在WebUI里,你可以通过Spark的日志记录器把内容写入作业日志,步骤如下:- 引入日志模块并创建日志实例
- 将DataFrame的Schema和数据转为字符串后写入日志
示例代码:
import logging # 获取Spark日志实例 logger = spark._jvm.org.apache.log4j.Logger.getLogger("SparkProcLogger") # 捕获并输出Schema schema_content = df.schema.json() logger.info("=== DataFrame Schema ===") logger.info(schema_content) # 捕获并输出数据(注意大数据量时别这么做,避免日志过大) logger.info("=== DataFrame Sample Data ===") for row in df.limit(10).toJSON().collect(): logger.info(row)
之后在WebUI的作业历史里找到对应的Spark作业,进入后查看日志就能看到这些输出。
- 写入临时表后查询查看
把Schema和数据存入临时表,执行完存储过程后直接查询临时表:
# 保存Schema到临时表 schema_lines = df.schema.json().split("\n") spark.createDataFrame([(line,) for line in schema_lines], ["schema_content"]).createOrReplaceTempView("temp_df_schema") # 保存数据到临时表(可根据需求限制行数) df.limit(20).createOrReplaceTempView("temp_df_data")
执行完存储过程后,在BigQuery查询编辑器中运行:
-- 查看Schema SELECT * FROM temp_df_schema; -- 查看数据 SELECT * FROM temp_df_data;
就能直接在WebUI里看到Schema和数据内容。
- 通过BigQuery作业日志查看
执行完Spark存储过程后,回到BigQuery的作业页面,找到对应的存储过程执行记录,点击进入后切换到日志标签页,这里会汇总Spark作业的运行日志,包括你通过logger输出的所有内容。
内容的提问来源于stack exchange,提问作者silveris
相关产品推荐
相关产品推荐

