Zeppelin 中的 python.sql 错误:NameError: name 'pysqldf' is not defined

Posted

技术标签:

【中文标题】Zeppelin 中的 python.sql 错误:NameError: name \'pysqldf\' is not defined【英文标题】:python.sql in Zeppelin error: NameError: name 'pysqldf' is not definedZeppelin 中的 python.sql 错误:NameError: name 'pysqldf' is not defined 【发布时间】:2021-02-11 09:48:42 【问题描述】:

Apache Zeppelin(版本 0.9.0-preview1)的新功能。 IT 安装了它,并一直在创建一个新笔记本。尝试使用 python.sql 并出现错误:NameError: name 'pysqldf' is not defined.

笔记本第 1 段:

%python
# download IMDB files, store in pandas dataframes
import pandas as pd
import numpy as np
dfTitles = pd.read_csv('https://datasets.imdbws.com/title.basics.tsv.gz', sep='\t', header=0, compression='gzip', index_col='tconst', usecols=['tconst', 'titleType', 'primaryTitle', 'originalTitle', 'startYear', 'endYear', 'runtimeMinutes', 'genres'], dtype='str')

# clean up and transform data
dfTitles.replace(to_replace='startYear': r'\N', 'endYear': r'\N', 'runtimeMinutes': r'\N', 'genres': r'\N', value='startYear': '0', 'endYear': '0', 'runtimeMinutes': '0', 'genres': '', inplace=True)
dfTitles = dfTitles.astype('startYear': 'int32', 'endYear': 'int32')

笔记本第 2 段:

%python.sql
SELECT COUNT(primaryTitle), startYear FROM dfTitles WHERE startYear > $minYear=1980 AND startYear <= 2020 GROUP BY startYear ORDER BY startYear

第 1 段运行良好。运行第 2 段后出错:

执行第 1 行失败:zeppelin.show(pysqldf('SELECT COUNT(primaryTitle), startYear FROM dfTitles WHERE startYear > 1980 AND startYear

我确实阅读了SQL over Pandas DataFrames 文档,它说先决条件是运行:

pip install pandas
pip install -U pandasql

但我无法在笔记本中运行这些。如果我需要运行它们,我从哪里运行它们?

【问题讨论】:

【参考方案1】:

通过让 IT 重新启动 Zeppelin 服务器解决了该问题。

服务器可能内存不足,因为我在没有清理内存的情况下创建了一堆数据帧等。

我不必运行“pip install”命令。

得到这个结果图表:

【讨论】:

以上是关于Zeppelin 中的 python.sql 错误:NameError: name 'pysqldf' is not defined的主要内容,如果未能解决你的问题,请参考以下文章

Apache Zeppelin 中的 org/bson/conversions/Bson 错误

zeppelin aws中的spark python错误运行程序

Apache Zeppelin 与 Ignite 集成时出现“无法启动 Ignite 节点”错误

zeppelin 中的 Hello World 失败

如何为 zeppelin 用户授予正确的权限

Zeppelin SqlContext registerTempTable 问题