博主在学习并实践厦门大学林子雨老师的《Spark编程基础(Python版)》及配套网络教程的过程中,在使用Spark读写HBase数据时遇到了些许问题,此处进行记录。才疏学浅,欢迎指正批评~
版本
Parallels Desktop 16
Ubuntu20.04 虚拟机
Hadoop 3.1.3
Spark 2.4.0 Using Python version 3.7.9
HBase 2.2.2
初步配置Spark时遇到的问题
PySpark目前还不支持python3.8及以上的版本,且Ubuntu20.04自带的Python3的版本是python3.8.5,于是就涉及到需要再安装python3.7的问题。下载等问题此处不再赘述。
注:下载完成后,千万不要盲目修改系统的python3的软指向文件!!!否则可能导致terminal无法打开、linux用户循环登录、终端中任何命令都报错等一系列可怕的事情!!切记。
下载好Python3.7.x及其以下版本后,修改Spark环境配置文件
cd $SPARK_HOME/conf
vim spark-env.sh
采用vim编辑器(使用方法)在该文件的开头加入一行
export PYSPARK_PYTHON=/usr/bin/python3.7 pyspark
同时可以修改系统的环境配置
cd ~
vim ~/.bashrc
在该文件中加入如下修改语句:
export PYSPARK_PYTHON=/usr/bin/python3.7
然后运行source,就可以完成python版本的降级了
source ~/.bashrc
运行$SPARK_HOME/bin/pyspark
如下图:
在进行HBase数据读写之前,需要将HBase安装目录下lib中的一些jar包引入到Spark安装目录下。包括所有以hbase开头的jar包,guava-11.0.2.jar,htrace-core4-4.1.0-incubating.jar以及protobuf-java-2.5.0.jar。
cd $SPARK_HOME/jars
mkdir hbase //创建文件夹存放与hbase相关的jar包
cd hbase
cp /usr/local/hbase/lib/hbase*.jar ./
cp /usr/local/hbase/lib/guava-11.0.2.jar ./
cp $HADOOP_HOME/share/hadoop/common/lib/htrace-core4-4.1.0-incubating.jar ./
cp /usr/local/hbase/lib/protobuf-java-2.5.0.jar ./
注:
1)由于HBase版本原因,课本中的htrace-core-3.1.0-incubating.jar包应更改为htrace-core4-4.1.0-incubating.jar,且位于目录$HADOOP_HOME/share/hadoop/common/lib下
2)guava-11.0.2.jar 为本机版本,可以先进入/usr/local/hbase/lib目录查看版本后,再进行复制。