我试图使用sc.textFile()函数读取csv文件。但是,我得到了“unbound method textFile()必须用SparkContext实例作为第一个参数调用(改为get str instance)”错误。我在stackoverflow中查找了可能的答案,但找不到任何答案。请帮忙
我正在使用iPython笔记本中的以下脚本
import os.path
from pyspark import SparkContext
import csv
basedir = os.path.join('data')
inputpath = os.path.join('train_set.csv')
filename = os.path.join(basedir,inputpath)
numpart = 2
sc = SparkContext
train_data = sc.textFile(filename,numpart)
首先,谢谢你的问题,我用答案找到了解决同类问题的方法。我想回答你2015年8月11日的评论。
为了得到解释,您可以查看笔记本后面的命令shell中发生了什么。
当你第一次打电话时:
您将看到
Spark
正在初始化,就像从命令shell启动Spark
一样。 所以初始化sc
(默认情况下在Spark
启动时)如果你第二次这么说,你的评论中就有你所说的错误。所以我想说,您已经在第一次尝试建议时初始化了
Spark
上下文sc
(或者您可能运行了两次建议)。当您删除
SparkContext
定义时,它起作用的原因是sc
已定义,但下次启动IPython
笔记本时,我认为您必须运行sc = SparkContext()
一次。为了更清楚,我想说的是,从
IPython Notebook
的角度来看,代码的组织如下:每次重新启动内核以自定义
Python
环境并初始化Spark
环境时运行一次的单元格:第二个单元,可多次运行以进行测试:
但是如果需要一个单元格,也可以在代码末尾调用
SparkContext
对象上的stop()
方法:我真的建议O'Reilly的书Learning Spark Lightning-fast data analysis由霍尔顿卡拉乌,安迪康文斯基,帕特里克温德尔和马特扎哈里。特别是关于理解核心概念的第二章。
也许你现在知道了,如果是的话道歉,但这可能会帮助别人!
相关问题 更多 >
编程相关推荐