郑州网站建设代理,网站运营与推广,企业网站推广的模式,如何快速的做网站文章目录 准备连接hive的配置申请kerberos tgt在scala项目启动本地spark本地Jupyter Notebook启动pyspark 解决在wsl下进行开发、调试时#xff0c;需要连接kerberos鉴权的hdfs、hive的问题 准备连接hive的配置
core-site.xml、hdfs-site.xml、yarn-site.xml、hive-site.xml复… 文章目录 准备连接hive的配置申请kerberos tgt在scala项目启动本地spark本地Jupyter Notebook启动pyspark 解决在wsl下进行开发、调试时需要连接kerberos鉴权的hdfs、hive的问题 准备连接hive的配置
core-site.xml、hdfs-site.xml、yarn-site.xml、hive-site.xml复制到本地 不知道为什么yarn-site.xml里的配置也必须存在即使不使用yarn运行spark
申请kerberos tgt
在/etc/krb5.conf记录账户域名对应的授权服务地址注意配置default_ccache_nameTicket Granting Ticket存放路径的格式让java程序能够自动读取到tgt
[libdefaults]dns_lookup_realm falseticket_lifetime 24hrenew_lifetime 7dforwardable truerdns falsepkinit_anchors FILE:/etc/pki/tls/certs/ca-bundle.crtspake_preauth_groups edwards25519default_realm COMPANY.UAT.COM# default_ccache_name KEYRING:persistent:%{uid}default_ccache_name FILE:/tmp/krb5cc_%{uid}
[realms]
COMPANY.UAT.COM {kdc 10.0.0.1admin_server 10.0.0.1
}申请当前操作系统用户的进程都可使用的tgt(Ticket Granting Ticket)
# 24小时过期每天要执行一次
kinit -kt /etc/kerberos/hive.keytab hiveCOMPANY.UAT.COM使用klist命令可以看到已申请的tgt存储在/tmp/krb5cc_%{uid}文件里 java默认会访问/etc/krb5.conf记录的授权服务地址使用/tmp/krb5cc_%{uid}文件里的tgt信息申请访问具体服务的ticket
在scala项目启动本地spark
连接配置文件全放到项目的src/test/resources后可执行单元测试
import org.scalatest.funsuite.AnyFunSuite
import org.apache.spark.sql.SparkSessionclass SparkTest extends AnyFunSuite with BeforeAndAfterAll {val catalogImpl: String hivelazy val spark: SparkSession SparkSession.builder().appName(scala test).master(local[1]).enableHiveSupport()// 如果不使用kinit命令预先申请tgt也可让spark自行申请// .config(spark.kerberos.keytab, /etc/kerberos/hive.keytab)// .config(spark.kerberos.principal, hiveCOMPANY.UAT.COM) .getOrCreate()test(select hive) {val df spark.sql(select * from default.temp_test1 limit 10)df.printSchema()df.show()}test(sleep) {// 挂起测试线程可在localhost:4040访问spark控制台确认是否加载了hdfs、spark相关配置Thread.sleep(1000000)}
}本地Jupyter Notebook启动pyspark
vscode的Jupyter插件自动为一个打开的.ipynb文件在本地启动一个对应的ipykernel_launcher并支持为每个.ipynb文件指定python venv 修改spark启动配置后需要点击重启ipykernel的按钮再重新运行启动spark的代码单元格。
在指定的python venv下安装pyspark
pip3 install pyspark3.2.4连接配置文件全放到本地/apps/conf/SPARK目录内
from pyspark.sql import SparkSession
import os
# spark-submit能够读取环境变量SPARK_CONF_DIR指定的配置目录
os.environ[SPARK_CONF_DIR] /apps/conf/SPARK
# pyspark调用spark-submit启动driver
# 查看driver的java进程: ps -ef | grep pyspark-shell
spark (SparkSession.builder.appName(pyspark test).master(local[1]).enableHiveSupport()# 下载hive相关依赖包.config(spark.sql.hive.metastore.version, 3.1.3).config(spark.sql.hive.metastore.jars, maven).config(spark.jars.repositories, https://maven.aliyun.com/repository/public).getOrCreate()
)在后续notebook代码单元格里随意编辑、执行spark代码
df1 spark.sql(SHOW TABLES IN default)
df1.show()