c语言sscanf函数的用法是什么
219
2022-11-21
Sqoop导入表数据子集
where
我们可以导入表的使用Sqoop导入工具,"where"子句的一个子集。它执行在各自的数据库服务器相应的SQL查询,并将结果存储在HDFS的目标目录。
where子句的语法如下。
--where
下面的命令用来导入vehicle_name表数据的子集。子集查询camera_name为c102,且列只需要id,camera_name
命令如下:
sqoop import \--connect jdbc:mysql://master:3306/duanjc \--username root \--password 123456 \--where "camera_name ='c102'" \--target-dir /wherequery \--columns id,camera_name \--table vehicle_name --m 1
--columns 表示要导入哪些列
查看hdfs,只包含符合条件的记录。
[root@master bin]# hadoop fs -cat /wherequery/part-m-0000050d6394-e9qd-112eb-9c7a-030c2213e292,c10250d6394-e9qd-11fb-9c7a-030c2213e292,c10250d6394-e9qd-1beb-9c7a-030c2213e292,c10250d6394-e9qd-1deb-9c7a-030c2213e292,c10250d6394-e9qd-1f2eb-9c7a-030c2213e292,c10250dd394-e9qd-112eb-9c7a-030c2213e292,c10250f6394-e92d-112eb-9c7a-030c2218e062,c10250f6394-e9fd-112eb-9c7a-030c2218e062,c10250f6394-e9qd-112eb-9c7a-030c2213e292,c10250f6394-e9qd-112eb-9c7a-030c2218e062,c10250f6394-e9qd-112eb-9c7a-030c2218e262,c10250f6394-e9qd-112eb-9c7a-030c2218e292,c10250f6394d-e9fd-11eb-9c7a-000c2218e062,c10250f6394d-e9fd-11eb-9c7a-000c2918e062,c10250f6394d-e9fd-11eb-9c7a-030c2218e062,c102
query
按需求导入
sqoop import \--connect jdbc:mysql://master:3306/duanjc \--username root \--password 123456 \--target-dir /wherequery2 \--query 'select id,camera_name from vehicle_name where camera_name="c102" and $CONDITIONS' \--split-by id \--fields-terminated-by '\t' \--m 1
如果要用query,就要写$CONDITIONS,--fields-terminated-by 指定存储的时候,字段之间按照这个分割
查看hdfs:已经使用/t进行字段分割了
[root@master bin]# hadoop fs -cat /wherequery2/part-m-0000050d6394-e9qd-112eb-9c7a-030c2213e292 c10250d6394-e9qd-11fb-9c7a-030c2213e292 c10250d6394-e9qd-1beb-9c7a-030c2213e292 c10250d6394-e9qd-1deb-9c7a-030c2213e292 c10250d6394-e9qd-1f2eb-9c7a-030c2213e292 c10250dd394-e9qd-112eb-9c7a-030c2213e292 c10250f6394-e92d-112eb-9c7a-030c2218e062 c10250f6394-e9fd-112eb-9c7a-030c2218e062 c10250f6394-e9qd-112eb-9c7a-030c2213e292 c10250f6394-e9qd-112eb-9c7a-030c2218e062 c10250f6394-e9qd-112eb-9c7a-030c2218e262 c10250f6394-e9qd-112eb-9c7a-030c2218e292 c10250f6394d-e9fd-11eb-9c7a-000c2218e062 c10250f6394d-e9fd-11eb-9c7a-000c2918e062 c10250f6394d-e9fd-11eb-9c7a-030c2218e062 c102
增量导入
增量导入是仅导入新添加的表中的行的技术。
它需要添加'incremental', 'check-column',和'last-value'选项来执行增量导入。
下面的语法用于Sqoop导入命令增量选项。
--incremental
假设新添加的数据转换成emp表如下:
1206,satish p,grp des,20000,GR
下面的命令用于在emp表执行增量导入。
sqoop import \--connect jdbc:mysql://master:3306/userdb \--username root \--password root \--table emp --m 1 \--target-dir /emp_append \--incremental append \--check-column id \--last-value 1203
那个id那一列,也就是按照那一列增量导入的,最好是int,可比较性
--incremental append表示要增量导入
--check-column id表示要按照那一列增量导入
--last-value 1203上一列的值是1203,表示这次是从这个往后面
根据时间增量导入
sqoop import \--connect jdbc:mysql://master:3306/company \--username root \--password root \--table staff \--check-column last_modified \--incremental lastmodified \--last-value "2017-09-28 22:20:38" \--m 1 \--append
根据属性last_modified来增量导入,时间是last-value
使用last_modified方式导入数据要指定增量数据是要--append(追加)还是要--merge-key(合并)
--incremental lastmodified模式下last-value指定的值是会包含于增量导入的数据中
注意
sqoop中可以使用
sqoop import -D property.name=property.value
加入执行任务的参数,多个参数用空格隔开
sqoop-site.xml中有些属性设置了值,如果注释了就表示没有了,没有默认值.不像hadoop还有默认值
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~