CentOS版本:6.5CM和CDH版本为5.13.1 91.2 *** 作演示
表结构
CREATE TABLE my_table( KEY int, value string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE; CREATE TABLE my_table1( KEY int, age int ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;
数据文件内容:
[root@ip-186-31-6-148 data]# more a.txt 1,test 2,fayson 3,zhangsan [root@ip-186-31-6-148 data]#
test_user表数据
Insert方式加载数据
insert向Hive表中插入数据可以单条插入和多条插入
insert into my_table values(1,'fayson1'); #单条插入 insert into my_table values(2,'fayson2'),(3,'fayson3'); #多条插入
使用追加的方式从其他表查询相应数据并插入到Hive表中
使用追加的方式将test_user表中id大于3并且小于5的数据插入到my_table表中
INSERT INTO my_table SELECt id,name from test_user WHERe id > 3 and id < 5;
使用覆盖的方式从test_user表查询相应数据并插入到Hive表中
使用覆盖的方式将test_user表中id大于3并且小于5的数据插入到my_table表中
INSERT OVERWRITE TABLE my_table SELECt id,name from test_user WHERe id > 3 and id < 5;
多表插入,将test_user表中的数据分别插入到my_table和my_table1中
将test_user表中id大于4并且小于6的数据,分别插入到my_table和my_table1中
FROM test_user INSERT INTO my_table select id, name where id > 4 and id < 6 INSERT INTO my_table1 select id, age where id > 4 and id < 6;
Load本地数据文件
在命令行使用追加的方式Load本地数据文件到Hive表中
LOAD DATA LOCAL INPATH '/data/a.txt' INTO TABLE my_table;
使用覆盖的方式Load本地数据文件到Hive表中
LOAD DATA LOCAL INPATH '/data/a.txt' OVERWRITE INTO TABLE my_table;
Load HDFS数据文件
将文件put到HDFS的/data目录下
修改/data目录为hive用户
sudo -u hdfs hadoop fs -chown -R hive:hive /data
在命令行使用追加的方式Load HDFS数据文件到Hive表中
LOAD DATA INPATH '/data/a.txt' INTO TABLE my_table;
在命令行使用覆盖的方式Load HDFS数据文件到Hive表中
LOAD DATA INPATH '/data/a.txt' OVERWRITE INTO TABLE my_table;
总结
Load本地数据文件时需要注意文件目录和数据文件的权限,/data目录拥有其它用户的执行权限(x),目录下的数据文件有读权限®,否则会抛如下异常:
“Invalid path ''/data/a.txt'': No files matching path file:/data/a.txt (state=42000,code=40000)”
Load HDFS数据文件时需要登录Hive的用户是否有访问该文件的权限Load本地文件时是将数据拷贝至对应表的数据目录下,且文件名不变Load HDFS文件到Hive表时,文件会被Move到对应表的数据目录下,且保持文件名使用Load命令时如果没有OVERWRITE,会直接APPEND到Hive表中,并且不会去除重复数据
大数据视频推荐:
CSDN
大数据语音推荐:
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)