GCP Dataproc集群初始化脚本配置Excel/Avro Jar及Jupyter调用咨询
解决GCP集群PySpark处理Excel和Avro的Jar包依赖问题
一、集群初始化脚本(cluster_startup.sh)及依赖信息
1. Maven依赖坐标(用于提前上传Jar到GCS)
- Excel处理Jar:
com.crealytics:spark-excel_2.12:0.13.0(Scala版本需与集群Spark版本匹配:Spark 3.x对应Scala 2.12,Spark 2.x对应Scala 2.11) - Avro处理Jar:
org.apache.spark:spark-avro_2.12:3.1.2(需与集群Spark主版本一致,比如Spark 3.1.x用3.1.2)
2. cluster_startup.sh脚本内容
该脚本会将GCS上的Jar包下载到集群所有节点的Spark默认Jar目录,确保Spark自动加载:
#!/bin/bash # 替换为你的GCS存储桶名称 BUCKET_NAME="your-bucket-name" # 下载Excel Jar到Spark默认Jar目录 gsutil cp gs://${BUCKET_NAME}/spark-excel_2.12-0.13.0.jar /usr/lib/spark/jars/ # 下载Avro Jar到Spark默认Jar目录 gsutil cp gs://${BUCKET_NAME}/spark-avro_2.12-3.1.2.jar /usr/lib/spark/jars/ # 赋予Jar包可读权限(确保Spark能正常读取) chmod 755 /usr/lib/spark/jars/spark-excel_2.12-0.13.0.jar chmod 755 /usr/lib/spark/jars/spark-avro_2.12-3.1.2.jar
注意:需提前将对应版本的Jar包上传到指定GCS存储桶,Jar包文件名需与脚本中的一致(可从Maven仓库下载后上传)。
3. Terraform配置(沿用您的示例)
initialization_action { script = "gs://bucket_name/cluster_startup.sh" timeout_sec = 500 }
二、PySpark Jupyter中的Jar包调用及存储位置说明
1. 修正后的PySpark代码
由于spark.jars参数需要传入逗号分隔的Jar路径字符串,且集群无法访问外部网络,需直接引用GCS上的Jar包路径:
bucket_name = "your-bucket-name" # 文件名需与上传到GCS的Jar包一致 excel_jar = f"gs://{bucket_name}/spark-excel_2.12-0.13.0.jar" avro_jar = f"gs://{bucket_name}/spark-avro_2.12-3.1.2.jar" spark = SparkSession.builder \ .appName("ExcelToAvro") \ .config("spark.jars", f"{excel_jar},{avro_jar}") \ .getOrCreate() # 读取GCS上的Excel文件 df = spark.read.format("com.crealytics.spark.excel") \ .option("useHeader", "true") \ .option("inferSchema", "true") \ .option("dataAddress", "'NameOfYourExcelSheet'!A1") \ .load(f"gs://{bucket_name}/your_excel_file.xlsx") # 写入Avro文件到GCS df.write.format("avro").save(f"gs://{bucket_name}/output/test.avro")
说明:如果已经通过初始化脚本将Jar包放到
/usr/lib/spark/jars/,则无需在SparkSession中配置spark.jars,Spark会自动加载这些Jar包。
2. Jar包的存储位置
- 通过初始化脚本下载的Jar包:永久保存在集群每个节点的
/usr/lib/spark/jars/目录下,直到集群被销毁。 - 通过
spark.jars指定GCS路径的Jar包:Spark会临时下载到每个节点的临时目录(如/tmp/spark-<随机字符串>/jars/),集群重启或任务结束后会被自动清理。
内容的提问来源于stack exchange,提问作者Kumar
相关产品推荐
相关产品推荐

