在 Databricks 中的 pyspark 数据帧上下载 punkt 时出现 NLTK 查找错误

2024-04-29

我试图通过对 Databricks 中的 pyspark 数据框应用余弦相似度来查找文本列(“标题”、“标题”)的相似性。我的函数称为“cosine_sim_udf”,为了能够使用它,我必须进行第一次 udf 转换。

将函数应用于 df 后出现查找错误。有谁知道原因或有解决方案建议吗?

我的函数是寻找余弦相似度;

nltk.download('punkt')

stemmer = nltk.stem.porter.PorterStemmer()
remove_punctuation_map = dict((ord(char), None) for char in string.punctuation)

def stem_tokens(tokens):
    return [stemmer.stem(item) for item in tokens]


'''remove punctuation, lowercase, stem'''
def normalize(text):
    return stem_tokens(nltk.word_tokenize(text.lower().translate(remove_punctuation_map)))

vectorizer = TfidfVectorizer(tokenizer=normalize, stop_words='english')

def cosine_sim(text1, text2):
    tfidf = vectorizer.fit_transform([text1, text2])
    return float(((tfidf * tfidf.T).A)[0,1])
cosine_sim_udf = udf(cosine_sim, FloatType())

df2 =  df.withColumn('cosine_distance', cosine_sim_udf('title', 'headline')) # title and headline are text to find similarities

然后我得到这个错误;

PythonException: 'LookupError: 
org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 426.0 failed 4 times, most recent failure: Lost task 0.3 in stage 426.0 (TID 2135) (10.109.245.129 executor 1): org.apache.spark.api.python.PythonException: 'LookupError: 
**********************************************************************
  Resource [93mpunkt[0m not found.
  Please use the NLTK Downloader to obtain the resource:

  [31m>>> import nltk
  >>> nltk.download('punkt')
  [0m
  For more information see: https://www.nltk.org/data.html

  Attempted to load [93mtokenizers/punkt/PY3/english.pickle[0m

  Searched in:
    - '/root/nltk_data'
    - '/databricks/python/nltk_data'
    - '/databricks/python/share/nltk_data'
    - '/databricks/python/lib/nltk_data'
    - '/usr/share/nltk_data'
    - '/usr/local/share/nltk_data'
    - '/usr/lib/nltk_data'

问题是在你的情况下nltk.download('punkt')仅在驱动程序节点上执行,而 UDF 函数在未安装的工作节点上执行。

您有以下可能性:

  • 使用安装所需的资源集群初始化脚本 https://docs.databricks.com/clusters/init-scripts.html像这样的东西(它将在所有节点上安装这个文件):
#!/bin/bash

pip install nltk
python -m nltk.downloader punkt
  • 像这样的东西(尚未测试,但可能有效。也可能不适用于自动缩放集群):
import nltk
num_executors = sc._jsc.sc().getExecutorMemoryStatus().size()-1
sc.parallelize((("")*num_executors), num_executors) \
  .mapPartitions(lambda p: [nltk.download('punkt')]).collect()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Databricks 中的 pyspark 数据帧上下载 punkt 时出现 NLTK 查找错误 的相关文章

  • Google Cloud ML:输出的外部尺寸必须未知

    我们在本地得到了一个工作的导出模型 正在创建一个新的模型版本谷歌云机器学习如下 Create Version failed Model validation failed Outer dimension for outputs must b
  • 将数据作为 RDD 保存回 Cassandra

    我试图从 Kafka 读取消息 处理数据 然后将数据添加到 cassandra 中 就像它是 RDD 一样 我的麻烦是将数据保存回 cassandra 中 from future import print function from pys
  • Spark 数据框添加带有随机数据的新列

    我想向数据框中添加一个新列 其值由 0 或 1 组成 我使用了 randint 函数 from random import randint df1 df withColumn isVal randint 0 1 但我收到以下错误 spark
  • 从 keras 模型中将特征提取到数据集中

    我使用以下代码 由here https github com keras team keras blob master examples mnist cnn py 运行 CNN 来训练 MNIST 图像 from future import
  • pyspark中的稀疏向量RDD

    我一直在使用 mllib 的功能通过 Python Pyspark 实现此处描述的 TF IDF 方法 https spark apache org docs 1 3 0 mllib feature extraction html http
  • Java机器学习库可以商用吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道我可以将其用于商业产品的优秀 Java 机器学习库吗 不幸的是 Weka 和 Rapidmin
  • R 中 svm 特征选择的示例

    我正在尝试使用 R 包在 SVM 中应用特征选择 例如递归特征选择 我已经安装了 Weka 它支持 LibSVM 中的特征选择 但我还没有找到任何 SVM 语法的示例或类似的东西 一个简短的例子会有很大的帮助 功能rfe in the ca
  • Spark SQL / PySpark 中的逆透视

    我手头有一个问题陈述 其中我想在 Spark SQL PySpark 中取消透视表 我已经浏览了文档 我可以看到仅支持pivot 但到目前为止还不支持取消透视 有什么方法可以实现这个目标吗 让我的初始表如下所示 When I pivotPy
  • Python Spark DataFrame:用 SparseVector 替换 null

    在 Spark 中 我有以下名为 df 的数据框 其中包含一些空条目 id features1 features2 185 5 0 1 4 0 1 0 null 220 5 0 2 3 0 1 0 10 1 2 6 0 1 225 null
  • Tensorflow 的 LSTM 输入

    I m trying to create an LSTM network in Tensorflow and I m lost in terminology basics I have n time series examples so X
  • 在 kubernetes 上安装 PySpark 软件包时出现 Spark-Submit:ivy-cache 文件未找到错误

    我一整天都在与它斗争 我能够安装并使用带有 Spark shell 或连接的 Jupiter 笔记本的包 graphframes 但我想使用 Spark Submit 将其移动到基于 kubernetes 的 Spark 环境 我的火花版
  • 使用sklearn进行多标签特征选择

    我希望使用 sklearn 对多标签数据集执行特征选择 我想要获得最终的功能集across标签 然后我将在另一个机器学习包中使用它 我打算使用我看到的方法here https stackoverflow com questions 1640
  • 随机森林修剪

    我有 sklearn 随机森林回归器 它非常重 有 1 6 GB 并且在预测值时工作很长时间 我想把它修剪一下 让它变得更轻 据我所知 决策树和森林没有实施修剪 我无法自己实现它 因为树代码是用 C 编写的 而我不知道 有谁知道解决方案吗
  • 如何从 Databricks Delta 表中删除列?

    我最近开始发现 Databricks 并遇到了需要删除增量表的特定列的情况 当我使用 PostgreSQL 时 它就像 ALTER TABLE main metrics table DROP COLUMN metric 1 我正在浏览 Da
  • pyspark:将多个数据帧字段传递给 udf

    我是 Spark 和 Python 的新手 任何帮助表示赞赏 我有一个 UDF 并使用 US zipcd 纬度和经度创建了一个 Spark 数据框 UDF import math def distance origin destinatio
  • scikit-learn RandomForestClassifier 中的子样本大小

    如何控制用于训练森林中每棵树的子样本的大小 根据 scikit learn 的文档 随机森林是一种适合许多决策的元估计器 数据集的各个子样本上的树分类器并使用 平均以提高预测准确性并控制过度拟合 子样本大小始终与原始输入样本相同 大小 但如
  • Keras 中的损失函数和度量有什么区别? [复制]

    这个问题在这里已经有答案了 我不清楚 Keras 中损失函数和指标之间的区别 该文档对我没有帮助 损失函数用于优化您的模型 这是优化器将最小化的函数 指标用于判断模型的性能 这仅供您查看 与优化过程无关
  • 列对象不可调用 Spark

    我尝试安装 Spark 并运行教程中给出的命令 但出现以下错误 https spark apache org docs latest quick start html https spark apache org docs latest q
  • Python 上每个系数具有特定约束的多元线性回归

    我目前正在数据集上运行多元线性回归 起初 我没有意识到我需要限制自己的体重 事实上 我需要有特定的正权重和负权重 更准确地说 我正在做一个评分系统 这就是为什么我的一些变量应该对音符产生积极或消极的影响 然而 当运行我的模型时 结果不符合我
  • PySpark:如何将带逗号的列指定为小数

    我正在使用 PySpark 并加载csv文件 我有一列包含欧洲格式的数字 这意味着逗号替换点 反之亦然 例如 我有2 416 67代替2 416 67 My data in csv file looks like this ID Reven

随机推荐