pyspark 在kubernetes中部署时,spark中的Collect方法花费的时间更长

2vuwiymt  于 2023-05-21  发布在  Spark
关注(0)|答案(1)|浏览(126)

我一直在尝试在minikube上部署spark和jupyter note。我使用了 Helm 图来部署两者
Jupyter笔记本-https://artifacthub.io/packages/helm/pyspark-notebook-helm/pyspark-notebook
Spark - https://bitnami.com/stack/spark/helm
同时能够使用

spark = SparkSession.builder.master("spark://my-release-spark-master-0.my-release-spark-headless.default.svc.cluster.local:7077").getOrCreate()

运行以下代码段时

nums= sc.parallelize([1,2,3,4])
squared = nums.map(lambda x: x*x).collect()
for num in squared:
    print('%i ' % (num))

当它运行collect()方法时,执行会花费很长时间,并且永远不会完成

44u64gxh

44u64gxh1#

您可以在Kubernetes中运行Spark时检查先决条件,以确定它是否会提高其性能
一个运行中的Kubernetes集群,版本>= 1.22,使用kubectl配置了访问权限。如果你还没有一个工作的Kubernetes集群,你可以使用minikube在本地机器上设置一个测试集群。
我们建议使用最新版本的minikube并启用DNS插件。
请注意,默认的minikube配置不足以运行Spark应用程序。我们建议使用3个CPU和4g内存,以便能够使用单个执行器启动简单的Spark应用程序。
检查您的Spark环境的kubernetes-client library版本,以及它与您的Kubernetes集群版本的兼容性。
您必须具有相应的权限才能在群集中列出、创建、编辑和删除pods。您可以通过运行以下命令来验证是否可以列出这些资源
kubectl auth can-i <list|创造|编辑|delete> pods
必须允许驱动程序pod使用的服务帐户凭据创建pod、服务和配置Map。
必须在群集中配置Kubernetes DNS

相关问题