hdfs数据到hive中,以及hdfs数据隐身理解
hdfs数据到hive中:
假设hdfs中已存在好了数据,路径是hdfs:/localhost:9000/user/user_w/hive_g2park/user_center_enterprise_info/*
1.提前(在hive中)准备好表, user_center_enterprise_info2 ,用于接收hdfs数据。
CREATE TABLE user_center_enterprise_info2 ( `id`string , `name` string );
2.使用load data方式,加载数据,(已执行数据库选择命令 hive>use testdb;)
以下 相对/绝对 两种路径加载都行
hive>load data inpath 'hive_g2park/user_center_enterprise_info/*' into table user_center_enterprise_info; hive>load data inpath '/user/user_w/hive_g2park/user_center_enterprise_info/*' into table user_center_enterprise_info;
此时:
hdfs dfs -ls /user/user_w/hive_g2park/user_center_enterprise_info 发现里面内容没了
3.把数据从hive写回hdfs,让数据出现在hdfs
数据是从hdfs的 hive_g2park/user_center_enterprise_info 写到hive的,
现在写道 hive_g2park/user_center_enterprise_info3 路径下
-- 设置task数 set mapred.reduce.tasks = 1; 结果数据平均分区(分区数等于task数); set mapred.reduce.tasks = 1; insert overwrite directory 'hive_g2park/user_center_enterprise_info3' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' select * from g2park.user_center_enterprise_info2;
此时在hdfs下生成了新路径,
hive_g2park/user_center_enterprise_info3
并且有数据在其文件夹下
我的理解数据消失:
hive本质是map-reduce,即操作hdfs数据的方式有:spark,mr,pig,hive。
而hive只是在mr上包了一层,hive操作的时候,本质上,是直接操作的hdfs数据,也就是说hdfs数据load后,和hive数据是同一份数据
而且load data inpath ‘/user/hive/os.txt’ into table os;这种方式loca数据到hive辣么快,应该是修改了指针而已,而不是复制了一份数据到hive。
hdfs数据到hive就隐藏不见,这么设计,就是为了避免数据在被hive改动的同时,又被mr直接操作hdfs数据,删除移动什么的,造成数据的不一致,所以数据丢hive里hdfs里就看不见了
附录:
sqoop的导出参数中,hive-import作用:本次导入到hive中
导入看得到hdfs文件夹范例
sqoop import –connect jdbc:mysql://localhost:3306/user –username h –password ‘123’ \
–fields-terminated-by “\t” –table enterprise_info –delete-target-dir –target-dir ‘hive_g2park/user_center_enterprise_info’ \
–create-hive-table –hive-table g2park.user_center_enterprise_info
导入看不到hdfs文件夹范例
sqoop import –connect jdbc:mysql://localhost:3306/user –username h –password ‘123’
–fields-terminated-by “\t” –table enterprise_info –delete-target-dir
–hive-import –target-dir ‘hive_g2park/user_center_enterprise_info’
–create-hive-table –hive-table g2park.user_center_enterprise_info