我在 EMR(版本 5.32.0)上的 (Py)Spark 中遇到了一些问题。大约一年前,我在 EMR 集群上运行了相同的程序(我认为该版本一定是 5.29.0)。然后我能够spark-submit正确地使用参数配置我的 PySpark 程序。但是,现在我正在运行相同/相似的代码,但spark-submit参数似乎没有任何效果。
我的集群配置:
我使用以下spark-submit参数运行程序:
spark-submit --master yarn --conf "spark.executor.cores=3" --conf "spark.executor.instances=40" --conf "spark.executor.memory=8g" --conf "spark.driver.memory=8g" --conf "spark.driver.maxResultSize=8g" --conf "spark.dynamicAllocation.enabled=false" --conf "spark.default.parallelism=480" update_from_text_context.py
Run Code Online (Sandbox Code Playgroud)
我没有更改集群上的默认配置中的任何内容。
在 Spark UI 的屏幕截图下方,它仅指示 10 个执行程序,而我希望有 40 个执行程序可用...
我尝试了不同的spark-submit参数以确保错误与Apache Spark无关:设置 executor 实例不会更改 executors。我尝试了很多东西,似乎没有任何帮助。
我在这里有点迷茫,有人可以帮忙吗?
更新: 我在 EMR …
在 (name_id, name) 组合的数据帧上调用 Spark 的 MinHashLSH 的 approxSimilarityJoin 时,我遇到了问题。
我尝试解决的问题的摘要:
我有一个包含大约 3000 万个公司名称唯一(name_id、name)组合的数据框。其中一些名称指的是同一家公司,但 (i) 拼写错误,和/或 (ii) 包含其他名称。对每个组合执行模糊字符串匹配是不可能的。为了减少模糊字符串匹配组合的数量,我在 Spark 中使用 MinHashLSH。我的预期方法是使用具有相对较大 Jaccard 阈值的 approxSimilarityJoin(自连接),这样我就能够对匹配的组合运行模糊匹配算法,以进一步改善歧义消除。
我所采取的步骤摘要:
使用的部分代码:
id_col = 'id'
name_col = 'name'
num_hastables = 100
max_jaccard = 0.3
fuzzy_threshold = 90
fuzzy_method = fuzz.token_set_ratio
# Calculate edges using minhash practices
edges = MinHashLSH(inputCol='vectorized_char_lst', outputCol='hashes', numHashTables=num_hastables).\
fit(data).\ …Run Code Online (Sandbox Code Playgroud) garbage-collection minhash amazon-emr apache-spark-sql pyspark