软件:Spark - 3.1.1
环境:在windows中基于pycharm进行开发,使用远程Linux的python环境作为pycharm的解释器。
目标:通过pyspark读取开了Kerberos的HDFS集群上的文件。
配置:
在远程服务器上下载Spark
将hdfs-site.xml、yarn-site.xml、core-site.xml拷贝到linux服务器的spark/conf目录
准备好hdfs.keytab,可以通过klist -ket hdfs.keytab查看principal
编写代码
from pyspark import SparkContext, SparkConf
import os
os.environ['SPARK_HOME'] = '/home/xxx/kdh/spark'
os.environ['PYSPARK_PYTHON'] = '/software/anacondsa3/envs/pyspark_env/bin/python'
os.environ['PYSPARK_DRIVER_PYTHON'] = '/software/anaconda3/envs/pyspark_env/bin/python'
if __name__ == '__main__':
# 1. 创建sparkcontext对象
conf = SparkConf().setMaster('local[*]').setAppName('WordCount_hdfs')
conf.set('spark.kerberos.principal', "xxxxx")
conf.set('spark.kerberos.keytab', '/xxxx/hdfs.keytab')
sc = SparkContext(conf=conf)
# 2. 读取数据
rdd_init = sc.textFile('hdfs://dm47:8020/tmp/zzdb/words.txt')
print(rdd_init.collect())