`
zang232
  • 浏览: 10312 次
  • 性别: 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的目的是为了方便部署,因为它将所有必需的库合并到一个单一的文件中,避免了类路径...

    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...

    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-cli-1.1.0.jar

    大数据hadoop中hive-1.1.0 的cli ,jar包,hive-cli-1.1.0.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-exec-2.1.1.jar

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

    hive-jdbc-uber-2.6.3.0-292.jar

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

    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-3.1.2-bin.tar.gz

    在`apache-hive-3.1.2-bin`这个压缩包中,包含的主要文件和目录可能有: - `bin`:存放可执行脚本,如启动Hive CLI和Hive Server2的命令。 - `conf`:配置文件,如`hive-site.xml`,用于设置Hive的各种属性。 - `lib...

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

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

    hive-jdbc-jar-多版本.zip

    "hive-jdbc-jar-多版本.zip"是一个压缩包,包含了不同版本的Hive JDBC Uber Jars,覆盖了从1.5到1.8的多个Hive版本,适应不同的项目需求。 首先,我们要理解Uber JAR的概念。Uber JAR(也称为Shaded JAR)是一个...

    hive-exec-*.jar包

    Missing Hive Execution Jar: /hive/hive1.2.1/lib/hive-exec-*.jar

Global site tag (gtag.js) - Google Analytics