zoukankan      html  css  js  c++  java
  • CDH 集群机器上部署 Jupyter notebook 使用 Pyspark 读取 Hive 数据库

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

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

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

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

    很明显是我们现在的 client 端还并没有得到 hive metastore 数据库的数据。无法知晓现在 hive 数据库的情况。

    所以我们需要为其添加一些参数让他能读取到 hive 的 metastore,通过访问 hive 的 metastore.uris 就可以用获取,我们使用配置

    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 测试跑数据或者出数据了。

    另外需要注意的一点是,由于我们使用的是 CDH ,可以非常方便的动态配置资源池,在为了不影响其他同步任务的情况下,我为 Jupyter 配置了单独的支援池,可以和其他池子里面的任务互不影响。因为这个脚本可能起多个,所以如果我们起得太多可能会影响到正常的同步脚本和任务使用资源。

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

    Reference:

    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

  • 相关阅读:
    Spring boot 基于注解方式配置datasource
    Java任务调度框架之分布式调度框架XXL-Job介绍
    mysql使用联合索引提示字符长度超限制解决办法
    程序访问一个地址时候报400错误,浏览器访问正常怎么解决
    JDK8stream将list转Map对象报错java.lang.IllegalStateException
    如何应对互联网行业的「中年危机」?
    SpringMVC访问出错No converter found for return value of type
    怎么设置tomcat在get请求的中文也不乱码?两种情况下配置
    使用tomcat方式实现websocket即时通讯服务端讲解
    服务端向客户端推送消息技术之websocket的介绍
  • 原文地址:https://www.cnblogs.com/piperck/p/10453530.html
Copyright © 2011-2022 走看看