作为一个python新手,任何一个步骤都不能放过,就怕后续遇到同样的问题无从下手,先记录再记忆
1,我用的是hadoop2.7,spark-2.4.5-hadoop2.7,Anaconda3.6,Pycharm
2,下载跟你的Hadoop版本相同的winutil.exe放到%HADOOP_HOME%/bin/下,
3,将hive-site.xml,core-site.xml,hdfs-site.xml,yarn-site.xml,mapped-site.xml放到%Spark_HOME%conf/
4,将hive的元数据库mysql-connect-5.7.1.jar或者postgrsql-9.4.128.jre7.jar,postgresql-metadata-storage-0.9.2jar放到spark的jars
5,先连接hive。View——>Tool Windows——>database——>apache hive(输入ip,port,username)
点击test connect(测试看能不能连接,社区版可跳过)
6,File——>Settings——>Project Interpreter——>添加anaconda的python.exe环境
7,随便运行下代码,然后从edit configuration
PYSPARK_PYTHON=E:\Anaconda\python.exe;
HADOOP_USER_NAME=hdfs;
PYTHONUNBUFFERED=1;
SPARK_HOME=E:\spark-2.4.5-hadoop2.7;
HADOOP_HOME=D:\hadoop-2.7.1
8,File——>Settings——>Project Structure——>add content root——>将E:/spark-2.4.5-bin-hadoop2.7/python/lib/下的pyspark.zip
py4j.zip添加进来
9,如果你的hive表用到分割符为(##或者¥¥)类似的多分割符的,还需要将hive-contrib.jar放到spark的jars下
10,在E盘建立一个E:/tmp/hive2,做为spark及hive sql的临时目录,然后将文件夹权限设置成全部
(修改文件权限:https://jingyan.baidu.com/article/a3aad71a98173cf1fb0096a6.html)
11,如果还有中文乱码的情况,可以先Google一下,实在解决不了的可以试试下面的,加在Sparksession创建的对象里
.config('spark.executor.extraJavaOptions','-Dfile.encoding=utf-8')
.config('spark.driver.extraJavaOptions','-Dfile.encoding=utf-8')