• 技术文章 >数据库 >MongoDB

    hive支持mongodb吗

     Ly Ly2020-06-08 11:40:41原创3506

    hive支持mongodb,具体的连接方法如下:

    创建基于MongoDB的Hive表是通过MongoStorageHandler来处理的。它同样处理从Hive表里查询与插入数据(通过select与insert)。

    CREATE [EXTERNAL] TABLE <tablename>
    (<schema>)
    STORED BY 'com.mongodb.hadoop.hive.MongoStorageHandler'
    [WITH SERDEPROPERTIES('mongo.columns.mapping'='<JSON mapping>')]
    TBLPROPERTIES('mongo.uri'='<MongoURI>');

    有两种方式来指定所需连接的Mongo Collection。

    1. 在上述示例里面,通过mongo.uri这个表属性来指定,属性的值填入的是MongoDB connection string,通过它来指向具体的collection。这种方式会将这个URI存入表的metadata里面,如果需要填写连接的一些认证信息(如username:password等),该方式不太适合。

    2. 第二种方式是把connection string填入一个properties文件,如:

    # HiveTable.properties
    mongo.input.uri=mongodb://...

    然后提供这个文件的路径给mongo.properties.path这个表参数,如

    CREATE TABLE ...
    TBLPROPERTIES('mongo.properties.path'='HiveTable.properties')

    备注:在创建相应Hive表时所引用的MongoDB collection不一定要空的。

    在创建Hive表的时候,也可以选择性的指定MongoDB collection里的字段与Hive的列字段或struct字段的映射。指定的方式是在SERDEPROPERTIES里通过mongo.columns.mapping属性来指定。在创建基于BSON文件的Hive表时也可以用到。

    如果创建的表是EXTERNAL的,那么在Hive里删除这张表时,不会影响MongoDB里面的数据,只会删除这张表的metadata。如果没有指定EXTERNAL,那么删除表的时候会连带MongoDB里的数据一并删除,因此最好是指定创建的表为EXTERNAL。

    专题推荐:mongodb
    上一篇:安装完MongoDB找不到文件怎么解决 下一篇:idea怎么配置mongodb

    相关文章推荐

    • mongodb主从数据不同步怎么解决?• 如何解决win10 mongodb无法启动• 怎么查看mongodb的性能?• 安装完MongoDB找不到文件怎么解决

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网