大数据面试总结 - scala & sqoop

本文详细介绍了Sqoop在大数据环境中的使用,包括参数配置、数据一致性处理、性能优化以及解决数据倾斜问题。重点讨论了Sqoop在导入导出过程中的Null存储一致性,提出了解决方案,并分享了在数据导出到MySQL时如何确保数据一致性。此外,还提到了Sqoop一天可导入的数据量和执行时间,以及在处理Parquet数据时遇到的问题和解决办法。
摘要由CSDN通过智能技术生成

目录

 

1.7 Sqoop

1.7.1 Sqoop参数

1.7.2 Sqoop导入导出Null存储一致性问题

1.7.3 Sqoop数据导出一致性问题

1.7.4 Sqoop底层运行的任务是什么

1.7.5 Sqoop一天导入多少数据

1.7.6 Sqoop数据导出的时候一次执行多长时间

1.7.7 Sqoop在导入数据的时候数据倾斜

1.7.8 Sqoop数据导出Parquet(项目中遇到的问题)

1.10 Scala  wordcount + topn


1.7 Sqoop

1.7.1 Sqoop参数

/opt/module/sqoop/bin/sqoop import \

--connect \

--username \

--password \

--target-dir \

--delete-target-dir \

--num-mappers \

--fields-terminated-by   \

--query   "$2" ' and $CONDITIONS;'

1.7.2 Sqoop导入导出Null存储一致性问题

Hive中的Null在底层是以“\N”来存储,而MySQL中的Null在底层就是Null,为了保证数据两端的一致性。在导出数据时采用--input-null-string和--input-null-non-string两个参数。导入数据时采用--null-string和--null-non-string。

1.7.3 Sqoop数据导出一致性问题

场景1:如Sqoop在导出到Mysql时,使用4个Map任务,过程中有2个任务失败,那此时MySQL中存储了另外两个Map任务导入的数据,此时老板正好看到了这个报表数据。而开发工程师发现任务失败后,会调试问题并最终将全部数据正确的导入MySQL,那后面老板再次看报表数据,发现本次看到的数据与之前的不一致,这在生产环境是不允许的。

官网:http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html

Since Sqoop breaks down export process into multiple transactions, it is possible that a failed export job may result in partial data being committed to the database. This can further lead to subsequent jobs failing due to insert collisions in some cases, or lead to duplicated data in others. You can overcome this problem by specifying a staging table via the --staging-table option which acts as an auxiliary table that is used to stage exported data. The staged data is finally moved to the destination table in a single transaction.

–staging-table方式

sqoop export --connect jdbc:mysql://192.168.137.10:3306/user_behavior --username root --password 123456 --table app_cource_study_report --columns watch_video_cnt,complete_video_cnt,dt --fields-terminated-by "\t" --export-dir "/user/hive/warehouse/tmp.db/app_cource_study_analysis_${day}" --staging-table app_cource_study_report_tmp --clear-staging-table --input-null-string '\N'

1.7.4 Sqoop底层运行的任务是什么

只有Map阶段,没有Reduce阶段任务。默认是4个MapTask

1.7.5 Sqoop一天导入多少数据

100万日活=》10万订单,1人10条,每天1g左右业务数据

Sqoop每天将1G的数据量导入到数仓。

1.7.6 Sqoop数据导出的时候一次执行多长时间

每天晚上00:10开始执行,Sqoop任务一般情况20-30分钟的都有取决于数据量(11:116:18等活动在1个小时左右)

1.7.7 Sqoop在导入数据的时候数据倾斜

Sqoop 参数撇嘴: split-by:按照自增主键来切分表的工作单元。

num-mappers:启动N个map来并行导入数据,默认4个;

1.7.8 Sqoop数据导出Parquet(项目中遇到的问题

Ads层数据用Sqoop往MySql中导入数据的时候,如果用了orc(Parquet)不能导入,需转化成text格式

(1)创建临时表,把Parquet中表数据导入到临时表,把临时表导出到目标表用于可视化

2)ads层建表的时候就不要建Parquet表

 

1.10 Scala  wordcount + topn

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值