from pyspark.mllib.recommendation import Rating出错

进入pyspark
输入from pyspark.mllib.recommendation import Rating
报错 no module named numpy
我的环境:centos6.5 , python2.6
显然是我的虚拟机系统里自带的python2没有numpy这个包,而平常在windows下都是通过pip install numpy,虚拟机也没有pip,同时因为国外的服务器,pip下载的速度很慢,所以只能通过源码安装。
下面就是通过源码安装numpy的详细步骤:

因为我总感觉虚拟机里有些下载很慢,所以我是下载到windows和虚拟机的共享文件夹下,复制到linux系统的目录里。如果你的环境下载速度快,可以直接在linux终端进入一个目录,wegt https://files.pythonhosted.org/packages/8b/62/baf1e2c2b02de7898dcacd1d1a41e323b79d25be5c88d2805c89fb424835/setuptools-0.6c11.tar.gz,通过这种方式下载(后面的网址是你要下载的文件的连接)。

首先打开终端,输入su,然后你的密码进入超级用户。

1 安装setup

  1. 下载 setuptools 的tar.gz 文件,地址是https://pypi.org/project/setuptools/#history,进去找到你要下载的版本。
  2. 在linux终端下切换到一个目录下 cd /home/badou/Documents,然后输入cp /mnt/hgfs/'共享文件夹的名称'/setuptools-0.6c11.tar.gz /home/badou/Documents把文件复制过来.注意:共享文件夹在linux中的路径是/mnt/hgfs/共享文件夹名称
    3.终端输入tar vxf setuptools-0.6c11.tar.gz解压缩,然后 cd setuptools-0.6c11进入到解压后的文件夹,然后python setup.py install.

2 安装numpy

首先要安装相关工具(这一步的下载速度很快,总共也就几MB)。
在终端中一次输入下面几行命令,每一行等待几秒都需要再输入y确认:

  • yum install wget
  • yum install unzip
  • yum install gcc
  • yum install python-devel
  1. 打开这个网址https://sourceforge.net/projects/numpy/files/NumPy/1.9.0/numpy-1.9.0.zip,下载到共享文件夹中.
  2. 在linux终端下切换到一个目录下 cd /home/badou/Documents,然后输入cp /mnt/hgfs/'共享文件夹的名称'/numpy-1.9.0.zip /home/badou/Documents把文件复制过来.
  3. 终端输入unzip numpy-1.9.0.zip解压缩文件,然后 cd numpy-1.9.0进入到解压后的文件夹,然后python setup.py install,输入这行命令后终端会显示很长一段时间的安装过程,耐心等待就行。
  4. 在终端输入cd ..返回上一级目录,一定不要在解压的numpy目录里面进入python。输入python进入python命令行,import numpy as np如果没报错就是成功了。

3 安装完遇到的问题

安装完后这个时候我回到pyspark的交互界面,读取本地文件rawUserData = sc.textFile("file:/home/badou/Downloads/u.data"),报错sc is not defined,网上查了原因,sc是由python产生的,它没有被定义是因为python正在被别的kernel占用,需要重启spark,即cd /usr/local/src/spark/sbin,./stop-all.sh,然后重新启动./start-all.sh,转入spark/bin下启动pyspark,报错pyspark.sql.utils.IllegalArgumentException: u"Error while instantiating 'org.apache.spark.sql.hive.HiveSessionState':"
之前明明是好的,所以又重启了hadoop,还是报错,最后重启了虚拟机,正常运行。

你可能感兴趣的:(from pyspark.mllib.recommendation import Rating出错)