`

读取hive中一张表的所有字段的分组

    博客分类:
  • Hive
 
阅读更多

第一个参数是数据库名字

第二个参数是表的名字

 

 

#!/bin/python 

#[START] DESCRIPTION
#@param the first argument is the name of database
#@param the second argument is the name of table
#[END] DESCRIPTION

#[START]conf
hive_bin = "/home/work/lib/hive_udw2/bin/hive"
#[END]conf

import sys
import subprocess
arglen = len(sys.argv)
if (arglen < 3) :
        print "too less arguments"
        exit(1)
db = sys.argv[1] 
table = sys.argv[2] 
def run_hive_cmd(hive_cmd):
        cmd = "%s -e '%s'" % (hive_bin, hive_cmd)
        print "run sehll command : %s" % (cmd)
        res = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,close_fds=True);
        out=res.stdout.readlines();
        print "output of shell command is "
        print out 
        for k, v in enumerate(out):
                out[k] = v.rstrip("\n")
        return out 

def get_fields(rows):
        ans = []
        for k, v in enumerate(rows):
                f = v.split("   ")[0].strip()
                ans.append(f)
        return ans;

def get_group(db, table, field):
        hive_cmd = "USE %s ; SELECT %s, count(1) FROM %s GROUP BY %s" % (db, field, table, field)
        ans = run_hive_cmd(hive_cmd) 
        print "[START] output group of field %s (database is %s, table is %s)" % (field, db, table)
        print "%s                               %s" % ('value', 'num')
        for k, v in enumerate(ans):
                tmp = v.split(" ") 
                value = tmp[0]
                num = tmp[1]
                print "%s                               %s" % (value, num)
        print "[END] output group of field %s (database is %s, table is %s)" % (field, db, table)

cmd = "USE %s ; DESC %s" % (db, table)
fields = run_hive_cmd(cmd)
fields = get_fields(fields) 
for k, v in enumerate(fields):
        get_group(db, table, v)
分享到:
评论

相关推荐

    13-Hive基本操作1

    Hive 0.14版本开始支持`UPDATE`和`DELETE`操作,但这些操作通常在支持ACID特性的表上进行,且不适用于所有Hive版本。由于Hive设计为批处理工具,频繁的更新和删除操作不是最佳实践。 10. **创建索引**: Hive支持...

    基于 Java通过hive-sql分析字段的血缘关系

    【作品名称】:基于 Java通过hive-sql分析字段的血缘关系 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:通过hive-...

    修改hive表分区名称

    `命令来检查所有分区的信息,确保所有操作均已完成且正确无误。 通过上述步骤,我们不仅可以顺利地完成Hive表分区名称的修改,还能确保数据的一致性和完整性。这对于维护和管理大数据仓库来说是非常重要的。

    hive参数优化总结

    Map 数是 Hive 中一个非常重要的参数,影响着数据处理的速度和效率。Map 数太大将导致 Map 阶段输出文件太小,产生大量小文件,初始化和创建 Map 的开销很大。Map 数太小将导致文件处理或查询并发度小,Job 执行时间...

    datax hdfsreader修改,支持 hive Parquet格式,支持读取hive Long,Int类型

    datax hdfsreader修改,支持 hive Parquet格式,支持读取hive Long,Int类型

    Hive使用手册Hive使用手册

    在大数据处理领域,Apache Hive 是一个非常重要的工具,它提供了SQL-like的语言(HQL)用于对存储在Hadoop上的大规模数据进行查询和分析。本手册将深入探讨Hive的概念、数据类型、表的操作以及优化技巧。 1. **Hive...

    hive 创建表语法.docx

    Hive 创建表语法 Hive 创建表语法是 Hive 中的一种基本操作,用于创建 Hive 表。Hive 表可以是内部表,也可以是外部表。下面将详细介绍 Hive 创建表语法的使用。 EXTERNAL 关键字 在 Hive 中,使用 EXTERNAL ...

    hive数据分区时分区字段不可为中文。.doc

    - **默认编码**:Hive 默认采用 UTF-8 编码,但这种设置可能不足以支持所有字符集的需求。 - **配置文件调整**:通过修改配置文件来支持更多的字符集,特别是中文字符的支持。 #### 三、问题分析与解决方案 1. *...

    项目实战——Spark将Hive表的数据写入ElasticSearch(Java版本)

    Hive提供了丰富的接口供外部应用访问,包括Hive JDBC和Hive SerDe(Serializer/Deserializer),Java程序可以利用这些接口读取Hive表中的数据。 2. **Spark计算框架**: Spark是大数据处理的开源框架,以其高效、...

    iamxwaa#document#spark读取hive问题处理1

    spark2.3 读取hive问题处理读取不到hive中的数据库?spark通过hive读取hbase外连表,报Class Not Found等异常?手动指定s

    Pyspark读取Hive数据按照表格方式邮件发送

    内容概要:Pyspark读取Hive数据按照表格方式邮件发送多个邮箱 适合人群:大数据研发、后端、运维 能学到什么: 1、如何通过Spark读取Hive发送邮件进行数据监控 2、将数据形成表格方式发送多个指定邮箱 阅读建议: 1...

    hive2.1.1中orc格式读取报数组越界错误解决方法

    在Hive 2.1.1版本中,ORC(Optimized Row ...总之,当Hive在读取ORC格式数据时出现“数组越界”错误,可以考虑更新相关的jar包,特别是执行引擎和ORC处理库。同时,保持集群的维护和更新是避免这类问题的有效策略。

    sql行列转换、一个字段包含另一个字段.sql

    sql行列转换、一个字段包含另一个字段.sql

    hive表新增字段或者修改字段

    首先,让我们来看看如何在Hive中修改表字段的数据类型或字段名称。这通常涉及到以下步骤: 1. 如果表是外部表,需要将其转换为内部表,以便Hive能够控制其元数据。这可以通过以下命令完成: ```sql alter table ...

    Hive 多行合并和分组limit输出 UDF工具包

    用于多行合并和分组limit输出的udf工具包,已编译配置好,直接调用即可

    spark操作hive表源码

    SparkSQL会通过HiveMetastore获取表的元数据,包括表的分区信息、字段类型等。然后,它将DataFrame转换为执行计划,这个计划会被优化器进一步优化,生成执行逻辑。最后,这些逻辑被转化为Hive的Task,由Spark的...

    SQL、Hive SQL等SQL血缘解析工具

    // 获取id字段的血缘 LineageNode idNode = Delegate.getDelegate().getLineage(hql, "id"); // 获取name字段的血缘 LineageNode nameNode = Delegate.getDelegate().getLineage(hql, "name"); // 打印血缘 ...

    C# 读取Hive 需要的odbc驱动 64位

    C# 操作Hadoop 生态里 Hive 数据仓库 需要的odbc驱动 64位

    从任意hive单表读取并计算数据写入任意mysql单表的hive工具

    标题中的“从任意hive单表读取并计算数据写入任意mysql单表的hive工具”指的是一款专门用于数据迁移的工具,它能够帮助用户从Hive数据仓库中提取数据,进行必要的计算处理,然后将结果存储到MySQL数据库中。...

    ApacheHive

    当我们将一个文件映射为Hive中一张表时,只需在建表的时告诉Hive,数据中的列名、列分隔符、行分隔符等,Hive就可以自动解析数据。支持多种压缩格式:bzip2、gzip、lzo、snappy等。通常采用parquet+snappy格式存储。...

Global site tag (gtag.js) - Google Analytics