spark connect 3.4 开始就支持了connect 模式,3.4.1 比较稳定了
connect server 启动
实际上就是一个spark 引用,通过spark_submit 提交到spark 环境中
- 启动
./sbin/start-connect-server.sh --packages org.apache.spark:spark-connect_2.12:3.4.1
- 查看效果
应该会有一个java 进程
- 页面效果
python 应用
需要按足昂pyspark 同时可能需要一些其他的依赖包,比如grpcio,运行环境基于了venv
- app.py
from pyspark.sql import SparkSession
from datetime import datetime, date
from pyspark.sql import Row
spark = SparkSession.builder.remote("sc://localhost:15002").getOrCreate()
df = spark.createDataFrame([
Row(a=1, b=2., c='string1', d=date(2000, 1, 1), e=datetime(2000, 1, 1, 12, 0)),
Row(a=2, b=3., c='string2', d=date(2000, 2, 1), e=datetime(2000, 1, 2, 12, 0)),
Row(a=4, b=5., c='string3', d=date(2000, 3, 1), e=datetime(2000, 1, 3, 12, 0))
])
df.show()
from datetime import datetime, date
- 效果
- 监控页面
job 任务
说明
可能运行需要以来一个pip 包,按照提示安装即可,spark connect 还是很强大的,但是目前conect 缺少安全访问,通信协议上使用了grpc,这个具体可以看看官方的一些介绍,基于connect 可以简化spark的访问,对于开发以及调试也比较友好,目前我是基于本地模式
运行的,yarn 模式应该也是没有问题的,但是k8s 模式还需要测试, 后边我整理下测试结果
参考资料
https://www.databricks.com/blog/2022/07/07/introducing-spark-connect-the-power-of-apache-spark-everywhere.html
https://spark.apache.org/docs/latest/api/python/getting_started/quickstart_connect.html
https://stackoverflow.com/questions/36183486/importerror-no-module-named-google