1. 使用$SPARK_HOME/sbin/下的pyspark启动时,报错Traceback (most recent call last):
File "/home/joy/spark/spark/Python/pyspark/shell.py", line 28, in
首先按照搜索结果使用 yum install -y zlib* 安装了欠缺的包,但是仍报错,后使用sudo命令执行./pyspark即可正常执行。目前必须使用sudo命令才能正常执行,可能与环境设置有关,待解决——因为使用sudo命令安装,所以文件的所有者为root,chown更改所有者。
但是这样必须使用sudo安装pip,为了一劳永逸,重新编译python
解决方法:
1、安装依赖zlib、zlib-devel
2、重新编译安装Python
./configure
编辑Modules/Setup文件
找到下面这句,去掉注释
zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
重新编译安装:make & make install
编译后报错仍有部分模块未编译成功
Python build finished, but the necessary bits to build these modules were not found:
_bsddb _curses _curses_panel
_sqlite3 _ssl _tkinter
bsddb185 bz2 dbm
dl gdbm imageop
无论报错信息如何,意思很明确,我们编译的时候,系统没有办法找到对应的模块信息,为了解决这些报错,我们就需要提前安装依赖包,这些依赖包对应列表如下(不一定完全):
模块依赖说明
_bsddb
bsddb
Interface to Berkeley DB library。Berkeley数据库的接口.bsddb is deprecated since 2.6. The ideal is to use the bsddb3 module.
_curses
ncurses
Terminal handling for character-cell displays。
_curses_panel
ncurses
A panel stack extension for curses。
_sqlite3
sqlite
DB-API 2.0 interface for SQLite databases。SqlLite,CentOS可以安装sqlite-devel
_ssl
openssl-devel.i686
TLS/SSL wrapper for socket objects。
_tkinter
N/A
a thin object-oriented layer on top of Tcl/Tk。如果不使用桌面程序可以忽略TKinter
bsddb185
old bsddb module
老的bsddb模块,可忽略。
bz2
bzip2-devel.i686
Compression compatible with bzip2。bzip2-devel
dbm
bsddb
Simple “database” interface。
dl
N/A
Call C functions in shared objects.Python2.6开始,已经弃用。
gdbm
gdbm-devel.i686
GNU’s reinterpretation of dbm
imageop
N/A
Manipulate raw image data。已经弃用。
readline
readline-devel
GNU readline interface
sunaudiodev
N/A
Access to Sun audio hardware。这个是针对Sun平台的,CentOS下可以忽略
zlib
Zlib
Compression compatible with gzip
在CentOS下,可以安装这些依赖包:readline-devel,sqlite-devel,bzip2-devel.i686,openssl-devel.i686,gdbm-devel.i686,libdbi-devel.i686,ncurses-libs,zlib-devel.i686。完成这些安装之后,可以再次编译,上表中指定为弃用或者忽略的模块错误可以忽略。
在编译完成之后,就可以接着上面的第六步安装Python到指定目录下。安装完成之后,我们可以到安装目录下查看Python是否正常安装。
3. SparkSQL准备
首先呢,看使用HiveContext都需要哪些要求,文章中有这么三个要求:
1、检查$SPARK_HOME/lib目录下是否有datanucleus-api-jdo-3.2.1.jar、datanucleus-rdbms-3.2.1.jar
、datanucleus-core-3.2.2.jar 这几个jar包。
2、检查$SPARK_HOME/conf目录下是否有从$HIVE_HOME/conf目录下拷贝过来的hive-site.xml。
3、提交程序的时候将数据库驱动程序的jar包指定到DriverClassPath,如bin/spark-submit --driver-class-path *.jar。或者在spark-env.sh中设置SPARK_CLASSPATH。
参考文章,将$HIVE_HOME/lib下以datanucleus开头的几个jar包复制到$SPARK_HOME/lib下;$HIVE_HOME/conf下的hive-site.xml 复制到 $SPARK_HOME/conf下;将$HIVE_HOME/lib 下的MySQL-connector复制到$SPARK_HOME/jars下,
2. 启动spark-shell时报错
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
17/01/17 11:42:58 WARN SparkContext: Support for 7 is deprecated as of Spark 2.0.0
17/01/17 11:43:00 WARN NativeCodeLoader: Unable to load native-Hadoop library for your platform... using builtin-java classes where applicable
17/01/17 11:43:00 WARN Utils: Your hostname, node1 resolves to a loopback address: 127.0.0.1; using 192.168.85.128 instead (on interface eth1)
17/01/17 11:43:00 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address
17/01/17 11:43:11 WARN HiveConf: DEPRECATED: hive.metastore.ds.retry.* no longer has any effect. Use hive.hmshandler.retry.* instead
17/01/17 11:43:11 WARN HiveConf: HiveConf of name hive.server2.thrift.http.min.worker.threads does not exist
17/01/17 11:43:11 WARN HiveConf: Hi