/**从开始接手大数据的开发工作,在很多方面很是拙计啊,
简单的记一下接手的大数据工作的项目经验
*/
Sqoop:
用于关系型数据和大数据数据之间的关联等操作
第一篇:
1:数据导入到大数据集群环境
一:首先通信要通(废话...)
连接数据库命令,按照这种方式(Oacle10g、Sqoop1.4.5-cdh5.2.0)
sqoop import --connect "jdbc:oracle:thin:@134.64.**.**:1521:****" --username use --password pwd
驱动、IP地址、端口、用户、密码------没什么好说的,注意引号!!!
Sqoop的导入命令 --import
业务场景:
1:全表导入到hdfs
2:部分字段导入到hdfs
3:对部分字段进行where判断导入到hdfs
4:有中文的情况(LINUX、Hadoop编码格式)
5:数据量大的分布处理
6:分割字符的处理
7:压缩处理
8:字符转换
begin:
hadoop fs -mkdir /user/***/testsqoop //在集群的hdfs的环境上创建一个文件夹testsqoop用于存放测试的数据
Now 全表import尝试:
sqoop import --connect "jdbc:oracle:thin:@134.**.**.**:1521:****" --username *** --password *** --table zqk_bigdata_test_sqoop --target-dir /user/***/testsqoop001
MR完成,输出存放到目录下文件夹名称testsqoop001
但是不需要的字段导进去作甚,so用----query参数开写select语句、需要在后面加上"where $CONDITIONS",和split-by 参数
sqoop import --connect "jdbc:oracle:thin:@134.**.**.**:1521:***" --username *** --password ***--query ‘select t.nom1,t.nom2,t.nom3 from zqk_bigdata_test_sqoop t where $CONDITIONS‘ --target-dir /user/***/testsqoop002 --split-by nom2 //split-by ** 主键**,没有主键也可以用一个合适的字段代替
then 带有where的条件,试一下---需要用where参数指定导出时所使用的查询条件,success
sqoop import --connect "jdbc:oracle:thin:@134.64.***.**:1521:***" --username ***--password *** --query ‘select t.nom1,t.nom2,t.nom3 from zqk_bigdata_test_sqoop t where $CONDITIONS‘ --target-dir /user/****/testsqoop003 --split-by nom2 --where "t.nom2<‘4‘"
然后就是分割符号了,当oracle中的字段为空的时候,你会发现默认情况下的是"null"
可是我想展示为"",空而不是NULL字符串----需要一个参数--null-string ‘‘,里面写什么自己定了
sqoop import --connect "jdbc:oracle:thin:@134.**.**.**:1521:***" --username *** --password *** --query ‘select t.nom1,t.nom2,t.nom3 from zqk_bigdata_test_sqoop t where $CONDITIONS‘ --target-dir /user/***/testsqoop003 --split-by nom2 --where "t.nom2<‘4‘" --null-string ‘‘//--null-non-string 当那啥的列为非字符串类型,用这种语法
时间: 2024-10-16 01:20:48