hadoop-【萌芽求助】hive操作难倒

问题描述

【萌芽求助】hive操作难倒

题目开始:
下表是用户访问网站的日志表TRLOG,每一条记录,代表者一个平台(PLATFORM)上的一个用户(USER_ID)在某一时间(CLICK_TIME)的一次页面访问(CLICK_URL):
PLATFORM USER_ID CLICK_TIME CLICK_URL
WEB 12332321 2013-03-21 13:48:31.324 /home/
WEB 12332321 2013-03-21 13:48:32.954 /selectcat/er/
WEB 12332321 2013-03-21 13:48:46.365 /er/viewad/12.html
WEB 12332321 2013-03-21 13:48:53.651 /er/viewad/13.html
WEB 12332321 2013-03-21 13:49:13.435 /er/viewad/24.html
WEB 12332321 2013-03-21 13:49:35.876 /selectcat/che/
WEB 12332321 2013-03-21 13:49:56.398 /che/viewad/93.html
WEB 12332321 2013-03-21 13:50:03.143 /che/viewad/10.html
WEB 12332321 2013-03-21 13:50:34.265 /home/
WAP 32483923 2013-03-21 23:58:41.123 /m/home/
WAP 32483923 2013-03-21 23:59:16.123 /m/selectcat/fang/
WAP 32483923 2013-03-21 23:59:45.123 /m/fang/33.html
WAP 32483923 2013-03-22 00:00:23.984 /m/fang/54.html
WAP 32483923 2013-03-22 00:00:54.043 /m/selectcat/er/
WAP 32483923 2013-03-22 00:01:16.576 /m/er/49.html
…… …… …… ……
为了使题目叙述清晰,我们在上表中以用户12332321和32483923举例,将他们的访问按时间排了序,但实际的访问日志不是这样有序的,而是来一次访问就增加一条,平台、用户等等都是交错的,你懂的。
这个访问日志表积攒了若干天的用户访问记录,目前大约有20亿条数据,占用存储空间1TB。为了某些分析需求,我们需要把上述数据处理为如下结构的表ALLOG:
PLATFORM USER_ID SEQ FROM_URL TO_URL
WEB 12332321 1 NULL /home/
WEB 12332321 2 /home/ /selectcat/er/
WEB 12332321 3 /selectcat/er/ /er/viewad/12.html
WEB 12332321 4 /er/viewad/12.html /er/viewad/13.html
WEB 12332321 5 /er/viewad/13.html /er/viewad/24.html
WEB 12332321 6 /er/viewad/24.html /selectcat/che/
WEB 12332321 7 /selectcat/che/ /che/viewad/93.html
WEB 12332321 8 /che/viewad/93.html /che/viewad/10.html
WEB 12332321 9 /che/viewad/10.html /home/
WAP 32483923 1 NULL /m/home/
WAP 32483923 2 /m/home/ /m/selectcat/fang/
WAP 32483923 3 /m/selectcat/fang/ /m/fang/33.html
WAP 32483923 4 /m/fang/33.html /m/fang/54.html
WAP 32483923 5 /m/fang/54.html /m/selectcat/er/
WAP 32483923 6 /m/selectcat/er/ /m/er/49.html
…… …… …… ……
PLATFORM和USER_ID还是代表平台和用户ID;SEQ字段代表用户按时间排序后的访问顺序,FROM_URL和TO_URL分别代表用户从哪一页跳转到哪一页。对于某个平台上某个用户的第一条访问记录,其FROM_URL是NULL(空值)。
假设软硬件环境是:2个DataNode节点的实验用Hadoop 1.0.x集群,存储空间 6TB,Replication Factor为2;安装有Hive 0.90版本,数据表以逗号分隔的Delimited Text格式存储于HDFS。
为了实现上述需求,请你:
(1) 实现基于纯Hive SQL的ETL过程,从TRLOG表生成ALLOG表;(结果是一套SQL)
(2) 实现一个能加速上述处理过程的Hive Generic UDF,并给出使用此UDF实现ETL过程的Hive SQL;(结果是一个Hive Generic UDF的源文件,和一套SQL)
(3) 你还有没有其他的方法实现这个 ETL?如果有,请任选一个方法,并提交代码。(结果是你找到的方法的代码,如果没有找到更好的方法,请回答“无”)

解决方案

http://wenku.baidu.com/link?url=Ogj_AWz9CPoDmiqj9JdRYSdEQTqbcmTqcAoZ4JztudCBPWmi-tgMZrYk8BuxOem34ULZi67Tb5Z7vL89peeWq3bOjJTH59_mTFyJEj7z63W

时间: 2024-11-01 17:46:03

hadoop-【萌芽求助】hive操作难倒的相关文章

hadoop hive 操作 是封装在shell脚本好还是java中好?

问题描述 hadoop hive 操作 是封装在shell脚本好还是java中好? 我们现在将hive语句都封装到shell中,因为我个人比较擅长java 所以设想应该可以把hive写在java中,然后再走工作流调用. 就是不知道这两样都有什么优点,希望高手们指点迷津 最好基于你们遇到此问题的做法 多谢 解决方案 高手都在哪 高手都在哪 高手都在哪 解决方案二: 肯定是shell脚本好,shell容易维护,尽量不要使用java,你自己写一堆java代码,过了一段时间后,你发现自己都不认识了,使用

建立HBase的集群和HDInsight在Hadoop中使用Hive来查询它们

建立HBase的集群和HDInsight在Hadoop中使用Hive来查询它们 在本教程中,您将学习如何创建和查询HDInsight使用HiveHadoop的HBase的表.下列步骤描述:•如何使用提供在Azure门户的HBase的集群.•如何启用和使用RDP访问HBase的外壳,并使用HBase的外壳创建HBase的示例表,添加行,然后列出表中的行.•如何创建一个Hive表映射到一个现有的HBase的表,使用HiveQL查询数据在HBase的表.•如何使用Microsoft HBase的RES

centos-通过JDBC驱动连接Hive操作失败

问题描述 通过JDBC驱动连接Hive操作失败 hive版本:1.2.1 Hive.java程序片段: Class.forName("org.apache.hive.jdbc.HiveDriver"); 在centos上,通过javac -classpath对Hive.java 编译.相应的jar:hive-jdbc,hive-exec,hive-metastore 放在-classpath后面了. 编译成功: 通过jar cvf 打包成功为hive.jar. 然后通过 hadoop

[Hadoop大数据]——Hive连接JOIN用例详解

SQL里面通常都会用Join来连接两个表,做复杂的关联查询.比如用户表和订单表,能通过join得到某个用户购买的产品:或者某个产品被购买的人群.... Hive也支持这样的操作,而且由于Hive底层运行在hadoop上,因此有很多地方可以进行优化.比如小表到大表的连接操作.小表进行缓存.大表进行避免缓存等等... 下面就来看看hive里面的连接操作吧!其实跟SQL还是差不多的... 数据准备:创建数据-->创建表-->导入数据 首先创建两个原始数据的文件,这两个文件分别有三列,第一列是id.第

数据类型转换-【萌芽求助】hbase数据库多对一关系设计

问题描述 [萌芽求助]hbase数据库多对一关系设计 在myeclips10上,连接hbase数据库,表单的信息获取成功.question_one:不知道如何把map型转换成json或者其他格式传到前台,question_two:不知道如何在hbase中设计多对一.多对多的数据关系 解决方案 求大神驻足 ----IT届萌芽一枚,再次多谢

在hadoop进行 randomwriter -clean操作时,出现如下异常

问题描述 在hadoop进行 randomwriter -clean操作时,出现如下异常 ubuntu@master:~$ hadoop-2.5.2/bin/hadoop jar hadoop-2.5.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar randomwriter -clean 15/10/10 09:11:02 INFO mapreduce.Job: Task Id : attempt_144443828477

hdfs-【萌芽求助】start-dfs.sh

问题描述 [萌芽求助]start-dfs.sh 我的namenode和datanode启动正常,但执行start-dfs.sh命令时,出现错误, 每句中都报..Could not resolve hostname...! 连接方式是hostonly,hadoop2.6.0 [root@h1 ~]# cat /etc/hostname 192.168.1.101 [root@h1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomai

[Hadoop大数据]——Hive初识

Hive出现的背景 Hadoop提供了大数据的通用解决方案,比如存储提供了Hdfs,计算提供了MapReduce思想.但是想要写出MapReduce算法还是比较繁琐的,对于开发者来说,需要了解底层的hadoop api.如果不是开发者想要使用mapreduce就会很困难.... 另一方面,大部分的开发者都有使用SQL的经验.SQL成为开发者必备的技能... 那么可以不可以使用SQL来完成MapReduce的过程呢?-- 答案就是,Hive Hive能够解决的问题 Hive可以帮助开发者从现有的数

[Hadoop大数据]——Hive部署入门教程

Hive是为了解决hadoop中mapreduce编写困难,提供给熟悉sql的人使用的.只要你对SQL有一定的了解,就能通过Hive写出mapreduce的程序,而不需要去学习hadoop中的api. 在部署前需要确认安装jdk以及Hadoop 如果需要安装jdk以及hadoop可以参考我之前的博客: Linux下安装jdkLinux下安装hadoop伪分布式 在安装之前,先了解下Hive都有哪些东西. 下载并解压缩 去主页选择镜像地址: http://www.apache.org/dyn/cl