開始直接在 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