`
zang232
  • 浏览: 10161 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

hive那些事-01:hive中的CLI与REPL

    博客分类:
  • hive
阅读更多

搞技术的人可能比较认真。
之前只知道CLI,甚至一度把REPL当成CLI。那下面说说2个东西都是啥。
#######################################################
CLI:
          我猜你肯定知道什么是CLI。英文是:command-line interface
          就是类似于linux命令行界面那种程序。目前主流的标准分POSIX和GNU两种;
          不刀,直接上图说事:

         

         
         这种的就叫CLI.你会发现有2种参数设置方式,没错一种是GNU标准(--help),一种是POSIX标准(-h)
REPL:
         我想你肯定也见过REPL,而且你知道什么叫交互环境。那没错,PERL就是交互环境,英文是: read–eval–print- loop
         没错,想想你在交互环境下面的经历,就是输入(read)->执行(eval)->显示结果(print),然后最外层是个大的循环.
         同样不刀。直接上图说事:
        

 
         这种就是典型的REPL.

HIVE:
        如果你用过hive,那你会发现它支持CLI和REPL。
        如hive -e "XXXX";hive -f "XXXX";这种是CLI
           直接输入hive,出来那个有>提示符的界面就是REPL了。
HIVE的提示扩展:
        刀了这么多,只讲点概念,有点对不起观众。
        c/c++领域实现CLI与PERL自然有很成熟的工具包。
        java领域有2个非常著名的包分别来做这2件事:
        CLI:  commons-cli  : http://commons.apache.org/cli/
        REPL: jline                : http://jline .sourceforge.net
        java领域实现这种功能基本都是这2个包在做,hive当然也是。这2个包静静的躺在路径的lib下面
        ##########################
        那有什么用呢?这里举个比较有意思的例子。
        如果你常用hive的REPL,那么我想你肯定用过它的自动提示功能,你肯定也想过这个提示的功能太有限,我能定制提示嘛?类似于mysql的rehash功能。这样输入的时候就不用记那么多表名、字段什么的啦啊;
        一个简单而单纯的想法是,我把这些可以提示的词放在一个结构里面,然后我可以CRUD这个结构,这样与提示功能本身分离不是更好;
        你可能有不一样的想法,但我推荐你这么做。一个文件,里面一行放一个你需要提示的词;这样你可能通过外部程序(直接echo也可以啊,噗~)对这个 文件本身进行CRUD;然后hive内部的jline读这个文件,进行提示.很明显的我们通过一个配置文件做到了解耦.
        直接上段代码,你用十分钟学下jline,你就能明白我写的这个是什么意思了:
       

 
      没错,我们在用户的根目录下面定义了个.hive-user-keys文件,然后我们可以定期的把需要提示的词整理写入这个文件,然后在PERL中你就能把这些词T出来了。不是很酷嘛?

############
你自己写的一些小程序,通过CLI、JLINE也可以提供非常亲切的用户体验,至少显得你很专业!~

  • 大小: 7.5 KB
  • 大小: 4.3 KB
  • 大小: 37.3 KB
  • 大小: 21.8 KB
  • 大小: 10.9 KB
  • 大小: 5.4 KB
  • 大小: 25 KB
0
0
分享到:
评论

相关推荐

    Could not resolve dependencies for project org.apache.hive:hive-exec:jar:2.3.0:

    hive 开发UDF 使用maven工程 引发jar包缺失 hive 开发UDF 使用maven工程 引发jar包缺失

    DBeaver链接hive驱动包下载: hive-jdbc-uber-2.6.5.0-292.jar

    《DBeaver与Hive连接:hive-jdbc-uber-2.6.5.0-292.jar驱动详解》 在大数据处理领域,Hive作为一个基于Hadoop的数据仓库工具,广泛用于数据查询和分析。而DBeaver,作为一款跨平台的数据库管理工具,以其用户友好的...

    含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-3.1.2-bin.tar.gz

    含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-3.1.2-bin.tar.gz 含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-3.1.2-bin.tar.gz 含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-...

    hive-jdbc-1.1.0-cdh5.12.1 连接库 jar包

    Hive JDBC 1.1.0-cdh5.12.1 连接库是Apache Hive项目中的一个重要组件,主要用于允许客户端程序通过Java数据库连接(JDBC)接口与Hive服务器进行交互。这个连接库是专为CDH(Cloudera Distribution Including Apache...

    hive-jdbc-1.1.0-cdh5.4.5-standalone.jar

    hive-jdbc-1.1.0-cdh5.4.5-standalone.jar Caused by: java.sql.SQLException: java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver at com.trs.gateway.commons.hive.HiveFeature.getConnection...

    hive-jdbc-2.1.0.jar

    hive-jdbc-2.1.0.jar

    apache-hive-2.1.1-bin.tar

    apache-hive-2.1.1-bin.tar apache-hive-2.1.1-bin.tar apache-hive-2.1.1-bin.tarapache-hive-2.1.1-bin.tar apache-hive-2.1.1-bin.tar apache-hive-2.1.1-bin.tarapache-hive-2.1.1-bin.tar apache-hive-2.1.1-...

    Hive-2.1.1-CDH-3.6.1 相关JDBC连接驱动 Jar 包集合

    02、hive-exec-2.1.1-cdh6.3.1.jar 03、hive-jdbc-2.1.1-cdh6.3.1.jar 04、hive-jdbc-2.1.1-cdh6.3.1-standalone.jar 05、hive-metastore-2.1.1-cdh6.3.1.jar 06、hive-service-2.1.1-cdh6.3.1.jar 07、libfb303-...

    hive驱动包hive-jdbc-uber-2.6.5.0-292.jar(用户客户端连接使用)

    标题中的"**hive-jdbc-uber-2.6.5.0-292.jar**"是一个Uber(也称为Shaded)JAR文件,它集成了Hive JDBC驱动的所有依赖项。Uber JAR的目的是为了方便部署,因为它将所有必需的库合并到一个单一的文件中,避免了类路径...

    hive2.1.1-cdh6.3.2

    1. **hive-jdbc-2.1.1-cdh6.3.2-standalone.jar**:这是Hive JDBC的独立版本,包含了所有必要的依赖,可以直接在没有其他CDH库的环境中运行。开发者可以将这个JAR文件添加到他们的项目中,以便通过Java应用程序或Web...

    hive-cli-1.1.0.jar

    大数据hadoop中hive-1.1.0 的cli ,jar包,hive-cli-1.1.0.jar

    hive-jdbc-uber-2.6.3.0-292.jar

    总结,"hive-jdbc-uber-2.6.3.0-292.jar"是Hive与DBeaver之间的重要桥梁,它使数据分析师能够在DBeaver这样的通用数据库管理工具中方便地操作Hive数据仓库,提升了数据管理和分析的工作效率。正确配置和使用Hive ...

    Apache Hive(apache-hive-3.1.3-bin.tar.gz)

    Apache Hive(apache-hive-3.1.3-bin.tar.gz、apache-hive-3.1.3-src.tar.gz)是一种分布式容错数据仓库系统,支持大规模分析,并使用 SQL 促进读取、写入和管理驻留在分布式存储中的 PB 级数据。Hive 构建在 Apache...

    flink-connector-hive-2.12-1.13.1.jar

    flink-connector-hive_2.12-1.13.1.jar 是 Apache Flink 的一个 Hive 连接器 JAR 包,用于在 Flink 中与 Apache Hive 集成。这里面的数字 2.12 和 1.13.1 分别表示了这个 JAR 包所依赖的 Scala 和 Flink 的版本。 ...

    apache-hive-2.3.3-bin.tar.gz

    `apache-hive-2.3.3-bin.tar.gz` 是Apache Hive 2.3.3版本的源码或二进制发行版的压缩包,通常包含了运行和管理Hive所需的所有文件。 在这个版本中,我们可能会发现以下关键组件和功能: 1. **Hive Metastore**:...

    hive-exec-2.1.1.jar

    hive-exec-2.1.1 是 Apache Hive 的一部分,特别是与 Hive 的执行引擎相关的组件。Apache Hive 是一个构建在 Hadoop 之上的数据仓库基础设施,它允许用户以 SQL(结构化查询语言)的形式查询和管理大型数据集。Hive ...

    hive-jdbc-uber-2.6.5.0-292.zip

    标题中的“hive-jdbc-uber-2.6.5.0-292.zip”指的是Hive JDBC驱动的Uber版本,版本号为2.6.5.0-292。Uber JAR是一种包含所有依赖的单一JAR文件,便于分发和使用,特别是对于连接工具如DataGrip这样的集成开发环境...

    hive-jdbc-uber-3.1.2+yanagishima-18.0

    安装Yanagishima时,需要将"Hive-jdbc-uber-3.1.2.jar"配置到其类路径中,以便与Hive服务通信。同时,还需要配置Kerberos认证的相关参数,如principal和keytab文件的位置,以确保Yanagishima能够在安全模式下正常...

    flink-connector-hive-2.11-1.13.2-API文档-中文版.zip

    赠送jar包:flink-connector-hive_2.11-1.13.2.jar; 赠送原API文档:flink-connector-hive_2.11-1.13.2-javadoc.jar; 赠送源代码:flink-connector-hive_2.11-1.13.2-sources.jar; 赠送Maven依赖信息文件:flink-...

    hive-jdbc-uber-2.6.5.jar

    hive-jdbc-uber-2.6.5.0-292.jar DbVisualizer (as of version 9.5.5) Below is an example configuration using DbVisualizer: Open the Diver Manager dialog ("Tools" > "Driver Manager...") and hit the ...

Global site tag (gtag.js) - Google Analytics