hive数据处理及hdfs文件操作

本文详细介绍了使用Hive处理数据及HDFS文件操作的步骤,包括创建Hive表、上传数据到HDFS、加载数据到Hive、数据转换以及遇到的问题和解决方案。内容涵盖数据上传、加载、统计分析以及Python脚本在Hive中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面:

本想使用hive调用python脚本实现统计分析movielens数据,但是最后一步调用脚本的地方不成功没找到问题所在,于是将过程中的一些经验写出来,非常详尽,对新手来说应该挺有用的。

另外调用脚本的程序和报错我会贴出来,应该是脚本写的有问题,后面找到问题或者有人告诉我我会更新。


还拿hive与movie lens数据说事儿。

1、首先进入hive数据库创建基表
这里写图片描述
2、在linxu文件工作文件夹下下载数据资源并且解压,我的目录是opt/jskp/jinjiwei

wget http://files.grouplens.org/datasets/movielens/ml-100k.zip

这里写图片描述
这里写图片描述
3、在hdfs上新建自己的工作文件夹,我的是hdfs dfs -mkdir 文件名(JJW)
这里写图片描述
4、将本地解压的文件上传到hdfs:

hdfs dfs -put /opt/jskp/jinjiwei/ml-100k /JJW(hdfs目录)

在hdfs上面查看上传结果:
这里写图片描述
5、将ml-100k文件下的u.data文件加载到hive数据库前面建的基表JJW中:
这里写图片描述
可以看到我第一次加载文件路径是本地路径是错误的,第二次是hdfs上面路径,结果正确,下面验证加载结果:
这里写图片描述
可以在hive中及进行一些简单的统计如:
这里写图片描述
6、创建子表JJW_new,用于把基表JJW数据导入子表(因为我调用python脚本不成功,这里就直接导入了)

CREATE TABLE JJW_new (
  userid INT,
  movieid INT,
  rating INT,
  weekday INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';

这里写图片描述
7、编写python脚本,功能仅仅将unix时间改为正常时间戳:

import sys
import datetime

for line in sys.stdin:
  line = line.strip()
  userid, movieid, rating, unixtime = line.split('\t')
  weekday=datetime.datetime.fromtimestamp(float(unixtime)).isoweekday()
  print '\t'.join([userid, movieid, rating, str(weekday
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值