CDH 集群机器上部署 Jupyter notebook 使用 Pyspark 读取 Hive 数据库

开始直接在 CDH Pyspark 的环境里面运行 Ipython 。python

spark = SparkSession \ .builder \ .master('yarn') \ .appName('md_day_dump_users') \ .enableHiveSupport() \ .getOrCreate()

In [3]: spark.sql('show databases').show()
+------------+
|databaseName|
+------------+
| default|
+------------+sql

能够用看到,咱们直接使用这个配置去读取 hive 数据库并不能得到咱们想要的数据库,而是只能读取到一个 default 默认数据库。数据库

很明显是咱们如今的 client 端还并无获得 hive metastore 数据库的数据。没法知晓如今 hive 数据库的状况。服务器

因此咱们须要为其添加一些参数让他能读取到 hive 的 metastore,经过访问 hive 的 metastore.uris 就能够用获取,咱们使用配置app

spark = SparkSession \ .builder \ .master('yarn') \ .appName('md_day_dump_users') \ .config("hive.metastore.uris", "thrift://ryze-1:9083") \ .enableHiveSupport() \ .getOrCreate() spark.sql("show databases").show() +-------------+
| databaseName|
+-------------+
|ads_algorithm|
| analytics_db|
|       course|
|      default|
|dw_dim_global|
|    dw_matrix|
|       member|
|          pay|
|    recommend|
|      sensors|
|          tmp|
|         user|
|       yanzhi|
+-------------+

替换当前的配置,就能够了。测试

 

在 ipython 跑通整个流程以后,剩下的咱们就是在当前权限用户下安装 Jupyter 。按照官方教程来安装,注意咱们使用的是 Python2.7.x 因此要选择 2.7.x 的安装方法,最终个人同事折腾了一下还替换掉一个 kernal 搞定。跑起来以后就能够从服务器上直接经过 SparkSession 来方便的使用 Spark 测试跑数据或者出数据了。ui

另外须要注意的一点是,因为咱们使用的是 CDH ,能够很是方便的动态配置资源池,在为了避免影响其余同步任务的状况下,我为 Jupyter 配置了单独的支援池,能够和其余池子里面的任务互不影响。由于这个脚本可能起多个,因此若是咱们起得太多可能会影响到正常的同步脚本和任务使用资源。spa

使用特定的池也很简单,指定参数  .config('spark.yarn.queue', 'root.jupyter')  便可。code

 

 

Reference:blog

https://stackoverflow.com/questions/51128243/hive-databases-only-list-default-db  hive-databases-only-list-default-db

https://stackoverflow.com/questions/31980584/how-to-connect-to-a-hive-metastore-programmatically-in-sparksql  how-to-connect-to-a-hive-metastore-programmatically-in-sparksql

https://stackoverflow.com/questions/48646097/setting-yarn-queue-in-pyspark  setting-yarn-queue-in-pyspark

相关文章
相关标签/搜索