• HDP Spark2 HIVE3.1 的问题


        HDP 上安装了 Hive3.1 和 Spark2, 提交 Spark 作业时,报找不到 Hive 中表的问题

      但是查一了下 hive 表,明明是存在这个表的。查看日志,注意到如下的一段日志。

    没修改值之前,我在 Spark-shell 里创建了一张 hive 表,发现其创建的位置是 spark.sql.warehouse.dir 指向的目录,不在 hive.metastore.warehouse.dir 目录里 (其实这个值在 hive 中的配置,但是 spark 的 conf 下的目录里没有配置)。我在 spark 的 conf 目录里增加了 hive.metastore.warehouse.dir 的值,使其与 hive 中配置的值一样。可是我修改后,在 spark-shell 里查寻表时,依然显示是刚才创建的表。我把 spark.sql.warehouse.dir 的值也改成 hive.metastore.warehouse.dir  的值,仍然如此。

    网上的另外几种方法:

    1. 把 hive-site.xml 复制到 Spark 的 conf 目录下。

        我看了一下 spark 的 conf 目录,有 hive-site.xml 这个表的,而且从日志中也可以看到 spark 能找到 hive 的 thrift://datacenter2:9083 这个地址,说明没问题。

    2. 创建 spark session 的时候要启用 hive。

    val ss = SparkSession.builder().appName("统计").enableHiveSupport().getOrCreate()

    我的程序里有启用的,所以也不是原因。

    3. 关闭 Hive 3 中的默认的 ACID 功能,修改如下几个参数

    hive.strict.managed.tables=false 
    hive.create.as.insert.only=false 
    metastore.create.as.acid=false

       试过之后,问题依旧。

       崩溃了,找不到其它解决方法了。先记录一下。

     ================================================

          有别的事,先做别的了。过了2天,抱着试试看的态度,在 /etc/spark2/3.1.0.0-78/0 下建了个软链接到  /etc/hive/conf 下的 hive-site.xml ,竟然找得到表了。通过比较,发现原 spark 下的 hive-site.xml 里多了一个 metastore.catalog.default 的配置,值是 spark。在网上搜了一下,才知道要改成 hive 才可以读 hive 下创建的表。这个值我理解的是表示hive仓库的命名空间。为什么 Spark 没有默认设置成 hive 的 catalog 的呢? 因为 HDP 3.1 中的 hive 会默认开启 ACID,spark 读取 ACID 的 表时,会出错,所以设置了一个 spark 的 catalog。 

  • 相关阅读:
    lwIP Memory Management
    FreeRTOS Memory Management ( IAR )
    Mastering stack and heap for system reliability
    LwIP buffer management, memory configuration options
    FreeRTOS API
    FreeRTOS Customisation -- FreeRTOSConfig.h
    FreeRTOS介绍与移植
    FreeRTOS
    LWIP轻量级TCPIP协议栈的移植
    Wifi模块的工作原理
  • 原文地址:https://www.cnblogs.com/langfanyun/p/10741775.html
Copyright © 2020-2023  润新知