Category Archives: 大数据技术

Hadoop / Hive / HBase / Mahout

Hive中的InputFormat、OutputFormat与SerDe

前言
Hive中,默认使用的是TextInputFormat,一行表示一条记录。在每条记录(一行中),默认使用^A分割各个字段。

在有些时候,我们往往面对多行,结构化的文档,并需要将其导入Hive处理,此时,就需要自定义InputFormat、OutputFormat,以及SerDe了。

首先来理清这三者之间的关系,我们直接引用Hive官方说法:

SerDe is a short name for "Serializer and Deserializer."
Hive us[......]

继续阅读

Hive中Group By的去重

在Hive的是用中,我们经常会有这种需求:

按照同一个id进行Group By,然后对另一个字段去重,例如下面得数据:
id pic
1 1.jpg
2 2.jpg
1 1.jpg
此时,是用DISTINCT或者2 col得Group By都是不行得,我们可以用这个UDAF:collect_set(col),它将对同一个group by 得key进行set去重后,转换为一个array。

再举一个例子,我们可以对pic进行去重,拼接:
SELECT id, CONCAT_W[......]

继续阅读

如何在Hive中使用Json格式数据

本文参考了:http://pkghosh.wordpress.com/2012/05/06/hive-plays-well-with-json/

表示感谢!

总体来说,有两大类方法:

1、将json以字符串的方式整个入Hive表,然后使用LATERAL VIEW json_tuple的方法,获取所需要的列名。

2、将json拆成各个字段,入Hive表。这将需要使用第三方的SerDe,例如:https://code.google.com/p/hive-json-serde/[......]

继续阅读

Hive的SELECT时,打印列名,以及key value显示

在MySQL中,支持\G,按照key = value的方式显示。

Hive也是支持的,只不过通过参数配置产生。

1、打印列名:
set hive.cli.print.header=true;
2、每行显示一个key、value,即\G类似的方式
set hive.cli.print.header=true;
set hive.cli.print.row.to.vertical=true;
set hive.cli.print.row.to.vertical.num=1;[......]

继续阅读