第一个参数是数据库名字
第二个参数是表的名字
#!/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)
分享到:
相关推荐
Hive 0.14版本开始支持`UPDATE`和`DELETE`操作,但这些操作通常在支持ACID特性的表上进行,且不适用于所有Hive版本。由于Hive设计为批处理工具,频繁的更新和删除操作不是最佳实践。 10. **创建索引**: Hive支持...
【作品名称】:基于 Java通过hive-sql分析字段的血缘关系 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:通过hive-...
`命令来检查所有分区的信息,确保所有操作均已完成且正确无误。 通过上述步骤,我们不仅可以顺利地完成Hive表分区名称的修改,还能确保数据的一致性和完整性。这对于维护和管理大数据仓库来说是非常重要的。
Map 数是 Hive 中一个非常重要的参数,影响着数据处理的速度和效率。Map 数太大将导致 Map 阶段输出文件太小,产生大量小文件,初始化和创建 Map 的开销很大。Map 数太小将导致文件处理或查询并发度小,Job 执行时间...
datax hdfsreader修改,支持 hive Parquet格式,支持读取hive Long,Int类型
Hive提供了丰富的接口供外部应用访问,包括Hive JDBC和Hive SerDe(Serializer/Deserializer),Java程序可以利用这些接口读取Hive表中的数据。 2. **Spark计算框架**: Spark是大数据处理的开源框架,以其高效、...
Hive 创建表语法 Hive 创建表语法是 Hive 中的一种基本操作,用于创建 Hive 表。Hive 表可以是内部表,也可以是外部表。下面将详细介绍 Hive 创建表语法的使用。 EXTERNAL 关键字 在 Hive 中,使用 EXTERNAL ...
在Hive 2.1.1版本中,ORC(Optimized Row ...总之,当Hive在读取ORC格式数据时出现“数组越界”错误,可以考虑更新相关的jar包,特别是执行引擎和ORC处理库。同时,保持集群的维护和更新是避免这类问题的有效策略。
spark2.3 读取hive问题处理读取不到hive中的数据库?spark通过hive读取hbase外连表,报Class Not Found等异常?手动指定s
内容概要:Pyspark读取Hive数据按照表格方式邮件发送多个邮箱 适合人群:大数据研发、后端、运维 能学到什么: 1、如何通过Spark读取Hive发送邮件进行数据监控 2、将数据形成表格方式发送多个指定邮箱 阅读建议: 1...
- **默认编码**:Hive 默认采用 UTF-8 编码,但这种设置可能不足以支持所有字符集的需求。 - **配置文件调整**:通过修改配置文件来支持更多的字符集,特别是中文字符的支持。 #### 三、问题分析与解决方案 1. *...
sql行列转换、一个字段包含另一个字段.sql
用于多行合并和分组limit输出的udf工具包,已编译配置好,直接调用即可
SparkSQL会通过HiveMetastore获取表的元数据,包括表的分区信息、字段类型等。然后,它将DataFrame转换为执行计划,这个计划会被优化器进一步优化,生成执行逻辑。最后,这些逻辑被转化为Hive的Task,由Spark的...
// 获取id字段的血缘 LineageNode idNode = Delegate.getDelegate().getLineage(hql, "id"); // 获取name字段的血缘 LineageNode nameNode = Delegate.getDelegate().getLineage(hql, "name"); // 打印血缘 ...
C# 操作Hadoop 生态里 Hive 数据仓库 需要的odbc驱动 64位
标题中的“从任意hive单表读取并计算数据写入任意mysql单表的hive工具”指的是一款专门用于数据迁移的工具,它能够帮助用户从Hive数据仓库中提取数据,进行必要的计算处理,然后将结果存储到MySQL数据库中。...
当我们将一个文件映射为Hive中一张表时,只需在建表的时告诉Hive,数据中的列名、列分隔符、行分隔符等,Hive就可以自动解析数据。支持多种压缩格式:bzip2、gzip、lzo、snappy等。通常采用parquet+snappy格式存储。...
pyflink将mysql数据直接插入hive,由此可以延伸出pyflink实现hive关联mysql