hdfs hive mqsql之间的导入语句

hive建表

hive> 
create table hivetest.flow(
phoneNumber string,
upflow int,
downflow int)
row format DELIMITED FIELDS TERMINATED BY ' ' //读取文件分隔符
STORED AS TEXTFILE
tblproperties("skip.header.line.count"="1");//忽略文件第一行

hdfs 导入hive(方便MapReduce查询)

load data  inpath '/input/user_log.scv' into table hivetest.userlog;

hive 导入hdfs(查询结果导出到hdfs)

insert overwrite directory '/output/t_userlog'  //目标路径
row format DELIMITED FIELDS TERMINATED BY '\t'  	      //分隔符对应hdfs -mysql
STORED AS TEXTFILE 
SELECT * FROM hivetest.userlog 			//sql

hdfs -mysql(存入数据库)

sqoop export --connect 'jdbc:mysql://ETC01:3306/test?
useUnicode=true&characterEncoding=utf-8'  	//防止中文乱码
--username root --password root  --table userlog  //目标表
--direct  //方言 加快读取速度
--export-dir /output/t_userlog   		//源目录
--driver com.mysql.jdbc.Driver 
--input-fields-terminated-by '\t' --lines-terminated-by '\n'  //分隔符对应hdfs 导入hive

mysql–hive

sqoop import  --connect jdbc:mysql://ETC01:3306/test --username root  --password root 
--table math --hive-import 
--hive-database hivetest --hive-table math 
--delete-target-dir  --target-dir  /input/sqoop/tmp -m 1

1.–append 追加
2.–as -textfile 作为普通文件导入
3.–columns 导入列
4.–target-dir 目标
5.–delete–target-dir 删除目录

(1) query, where子句必须有$CONDITIONS(固定写法)

sqoop import 
--connect jdbc:mysql://ETC01:3306/test 
--username root 
--password root 
--query 'select * from student where id>10 and $CONDITIONS'  
--delete-target-dir 
--target-dir  /input/sqoop/student 
--split-by id (无主键)  -m1

(2)columns指定导入的字段

--table user 
--columns account,password  //不能有空格

(3)where子句

--table user 
--where 'id > 5 and account like "f%"' 

(4)hive建表语句中不能有分隔符,否则可能mysql 表中数据都导入到一列中
(5)源表中无主键用 -m 1


退出安全模式

hdfs dfsadmin -safemode leave

远程连接

nohup hive --service hiveserver2 -hiveconfhive.server2.thrift.port=10010 &

删除文件第一行

sed -i‘1d’ samll.txt 

忽略文件第一行

  tblproperties("skip.header.line.count"="1");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章