很高兴终于发布我的第一个问题,但如果我不清楚或违反标准礼仪,请轻推我。我真诚地感谢我能得到的任何帮助。
我正在尝试使用PySpark(在 Databricks 中)并行训练许多语料库(每个语料库对应于不同的作者)的嵌入。每位作者的每个语料库大小不超过 1GB
corpi/df 的形式为:
+----------------+------------------------------------------------------------+
| author| corpus|
+----------------+------------------------------------------------------------+
| john| [["hello"], ["these", "are", "john's", "thoughts"]] |
| steve| [["hello"], ["these", "are", "steve's", "thoughts"]] |
| markus| [["hello"], ["these", "are", "markus's", "thoughts"]] |
+----------------+------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
过去的尝试:
gensimWord2Vec 函数应用于上面的每一行。这适用于小型公司,但无论我将其制作多大,我都会遇到 OutOfMemory 错误spark.executor.memory,这会导致我失去执行者、无限期挂起等......explode上面的数据框转换为每行都是一个句子。然后我想我会做一个df.groupBy('author'),我会定义一个 UDF,它实现 Spark 的Word2Vec模型来训练组并保存模型。不幸的是,即使只使用几个作者、重新分区等......,它也不会让我在不无限期挂起的情况下分解数据框,所以我坚持使用上面显示的数据框。簇 :
配置(受此处启发):
yarn.nodemanager.pmem-check-enabled false
spark.databricks.delta.preview.enabled …Run Code Online (Sandbox Code Playgroud) 我在 docker 中打包了一个 R Shiny 应用程序,并将其部署到 Fargate 实例上的 AWS ECS,该实例具有一个应用程序负载均衡器,该均衡器的侦听器持有 SSL 证书。我可以看到该任务正在运行并且运行状况良好,但是当我在空闲一段时间后访问该 URL 时,需要整整 30 秒才能加载(同样,这不是来自实例启动/配置时间,因为它已经启动并且健康)。然后我可以打开一个新的浏览器并转到相同的链接,它将立即加载。可能是什么原因造成的?老实说,我什至不知道要搜索什么。
注意:当我在本地运行容器时,应用程序确实需要几秒钟才能启动,但这只是在容器最初启动时。无论空闲时间如何,它在初始启动时间后都运行得非常快。因此,我不认为它是闪亮的服务器。我上面提到的实例已经在运行,我希望它们能够做出相应的行为。
我读到有关负载均衡器空闲超时的信息,但是在结束连接后是否需要 30 秒才能重新连接?对于网络应用程序的内部运作,我并不是很有经验,但这似乎不太可能。与此同时,增加空闲超时似乎确实有帮助,但这种行为有点不稳定,因此可能只是确认偏差。
如果需要,我可以提供有关配置的更多详细信息。我只是希望有人知道我应该分享哪些细节,而不是分享我的整个 Terraform 目录。
web-applications amazon-ecs amazon-elb shiny-server aws-fargate
amazon-ecs ×1
amazon-elb ×1
apache-spark ×1
aws-fargate ×1
databricks ×1
pyspark ×1
python ×1
shiny-server ×1