gpt4 book ai didi

python - 如何在jupyter PySpark session 中更改SparkContext属性spark.sql.pivotMaxValues

转载 作者:行者123 更新时间:2023-12-02 04:44:03 27 4
gpt4 key购买 nike

问:如何在 jupyter PySpark session 中更改 SparkContext 属性 spark.sql.pivotMaxValues

我进行了以下代码更改以增加spark.sql.pivotMaxValues。遗憾的是,在重新启动 jupyter 并再次运行代码后,它对产生的错误没有任何影响。

from pyspark import SparkConf, SparkContext
from pyspark.mllib.linalg import Vectors
from pyspark.mllib.linalg.distributed import RowMatrix
import numpy as np
try:
#conf = SparkConf().setMaster('local').setAppName('autoencoder_recommender_wide_user_record_maker') # original
#conf = SparkConf().setMaster('local').setAppName('autoencoder_recommender_wide_user_record_maker').set("spark.sql.pivotMaxValues", "99999")
conf = SparkConf().setMaster('local').setAppName('autoencoder_recommender_wide_user_record_maker').set("spark.sql.pivotMaxValues", 99999)
sc = SparkContext(conf=conf)
except:
print("Variables sc and conf are now defined. Everything is OK and ready to run.")

<...(其他代码)...>

df = sess.read.csv(in_filename, header=False, mode="DROPMALFORMED", schema=csv_schema)
ct = df.crosstab('username', 'itemname')

在我的交叉表代码行上抛出 Spark 错误消息:

IllegalArgumentException: "requirement failed: The number of distinct values for itemname, can't exceed 1e4. Currently 16467"

我希望我实际上并没有设置我试图设置的配置变量,那么有什么方法可以以编程方式实际设置该值(如果可能的话)?谢谢。

引用文献:

Finally, you may be interested to know that there is a maximum number of values for the pivot column if none are specified. This is mainly to catch mistakes and avoid OOM situations. The config key is spark.sql.pivotMaxValues and its default is 10,000.

来源:https://databricks.com/blog/2016/02/09/reshaping-data-with-pivot-in-apache-spark.html

我更愿意向上更改配置变量,因为我已经编写了交叉表代码,该代码在较小的数据集上效果很好。如果事实证明确实无法更改此配置变量,那么我的备份计划按顺序为:

  • 关系右外连接来实现我自己的 Spark 交叉表,其容量高于 databricks 提供的容量
  • scipy 密集向量,使用字典手工制作独特的组合计算代码

最佳答案

kernel.json

此配置文件应与 jupyter 一起分发~/.ipython/kernels/pyspark/kernel.json

它包含 SPARK 配置,包括变量 PYSPARK_SUBMIT_ARGS - 将与 spark-submit 脚本一起使用的参数列表。

您可以尝试将 --conf spark.sql.pivotMaxValues=99999 添加到上述脚本中的此变量。

PS在某些情况下,人们试图覆盖此变量 programmatically 。你也可以尝试一下...

关于python - 如何在jupyter PySpark session 中更改SparkContext属性spark.sql.pivotMaxValues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50530819/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com