zoukankan      html  css  js  c++  java
  • 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_info2;
    
    hive>load data inpath '/user/user_w/hive_g2park/user_center_enterprise_info/*' into table user_center_enterprise_info2;

    此时:

    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 SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
    WITH SERDEPROPERTIES (
    'field.delim'='	',
    'serialization.format'= '',
    'serialization.null.format'='' 
    ) STORED AS TEXTFILE
    select * from user;

    此时在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 export --connect jdbc:mysql://127.0.0.1:3306/parkdb --username xiaoming --password '123' --table t_vip_user --export-dir 'hive_g2park/vip/*' --fields-terminated-by "	"

    附录:

    sqoop的导出参数中,hive-import作用:本次导入到hive中

    导入看得到hdfs文件夹范例
    sqoop import --connect jdbc:mysql://localhost:3306/user --username h --password '123'
    --fields-terminated-by " " --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 " " --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

  • 相关阅读:
    数据库——Oracle(7)
    数据库——Oracle(6)
    数据库——Oracle(5)
    数据库——Oracle(4)
    数据库——Oracle(3)
    数据库——Oracle(2)
    Java 学习笔记之 Synchronized锁对象
    Java 学习笔记之 线程安全
    Java 学习笔记之 实例变量非线程安全
    Java 学习笔记之 方法内的临时变量是线程安全
  • 原文地址:https://www.cnblogs.com/xiaoliu66007/p/9445040.html
Copyright © 2011-2022 走看看