我在使用 python 3.7 使用下面的代码在 Jupyter Notebook 中运行 pyspark 时遇到错误。
from pyspark import SparkContext
from pyspark.sql.session import SparkSession
from pyspark.sql import SQLContext
import pyspark as ps
conf = ps.SparkConf().setMaster("yarn-client").setAppName("sparK-mer")
conf.set("spark.executor.heartbeatInterval","3600s")
sc = SparkContext('local')
sqlContext = SQLContext(sc)
from pyspark.mllib.linalg import Vector, Vectors
from nltk.stem.wordnet import WordNetLemmatizer
from pyspark.ml.feature import RegexTokenizer, StopWordsRemover, Word2Vec
Run Code Online (Sandbox Code Playgroud)
我正在根据以下代码读取 csv 文件:
datanew = sqlContext.read.format("csv") \
.options(header='true', inferschema='true') \
.load("C://Users//mypath//data.csv")
parts = datanew.rdd.map(lambda l: l.split(","))
datapysp = parts.map(lambda p: Row(uiid=p[0],title=(p[3].strip()),text=(p[4].strip())))
schemaString = "uiid title text"
fields = [StructField(field_name, StringType(), …Run Code Online (Sandbox Code Playgroud) 我正在使用Pyspark在Jupyter Notebook中运行一些命令,但它抛出错误。我尝试了此链接中提供的解决方案(Pyspark:例外:Java网关进程在发送驱动程序的端口号之前已退出),并且尝试执行此处提供的解决方案(例如,更改C:Java的路径,卸载Java SDK 10并重新安装Java) 8,仍然是抛出我同样的错误。
我尝试卸载并重新安装pyspark,并且尝试从anaconda提示符运行,但仍然遇到相同的错误。我正在使用python 3.7和pyspark版本是2.4.0。
如果使用此代码,则会收到此错误。“异常:Java网关进程在发送其端口号之前已退出”。
from pyspark import SparkContext
from pyspark.sql import SQLContext
sc = SparkContext()
sqlContext = SQLContext(sc)
from pyspark.mllib.linalg import Vector, Vectors
from nltk.stem.wordnet import WordNetLemmatizer
from pyspark.ml.feature import RegexTokenizer, StopWordsRemover, Word2Vec
Run Code Online (Sandbox Code Playgroud)
但是,如果我从此代码中删除sparkcontext运行正常,但我的解决方案将需要spark上下文。下面没有Spark上下文的代码不会引发任何错误。
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.mllib.linalg import Vector, Vectors
from nltk.stem.wordnet import WordNetLemmatizer
from pyspark.ml.feature import RegexTokenizer, StopWordsRemover, Word2Vec
Run Code Online (Sandbox Code Playgroud)
如果能得到帮助,我将不胜感激。我正在使用Windows 10 64位操作系统。
这是完整的错误代码图片。
我从互联网创建了一个数据集:
我正在使用基于我的本地文件(JSON 输出)的以下代码:
Validdata = []
for new in Sampledata:
print(str(new['title']) + " | " + str(new['published'][:10]))
Validdata.append(new)
Run Code Online (Sandbox Code Playgroud)
我的输出:
Amnesia: Collection Hits Xbox One Next Week | 2018-08-27
(USA) Building Safety Technician | 2018-08-27
SONY VAIO VPCCA15FG DRIVERS DOWNLOAD | 2018-08-26
Google Alert - windows 10 | 2018-08-27
Run Code Online (Sandbox Code Playgroud)
如果我们看到我有这样的数据,每个标题的末尾都有日期,并且我只想打印出介于特定日期范围之间的文章:
我尝试使用它进行比较,但收到此错误消息:
Startdate = '2018-09-01'
Enddate = '2018-10-01'
underDaterange = []
for value in Sampledata['title'] and Sampledata['published'][:10] in range [Startdate:Enddate]:
underDaterange.append(value)
Run Code Online (Sandbox Code Playgroud)
错误信息:
TypeError: list indices must be integers or slices, not str
Run Code Online (Sandbox Code Playgroud)