Hive_7. 数据抽样

随着数据规模增长,使用数据抽样加速分析变得至关重要。本文介绍了Hive中的三种抽样方法:1) 随机抽样,通过RAND()函数实现;2) 桶表抽样,利用CLUSTERED BY优化;3) 块抽样,按HDFS Block随机选取行或百分比数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当数据规模不断膨胀时,我们需要找到一个数据的子集来加快数据分析效率。因此我们就需要通过筛选和分析数据集为了进行模式 & 趋势识别。目前来说有三种方式来进行抽样:随机抽样,桶表抽样,和块抽样。

1 随机抽样(Random sampling):

使用 RAND()函数和 LIMIT 关键字来获得抽样数据。DISTRIBUTE 和 SORT 关键字在这里用来确保 mappers 和 reducers可以高效的使用随机分布的数据。 ORDER BY RAND()语句也可以达到同样目的,但是性能上会稍微差点。

SELECT * FROM <Table_Name> DISTRIBUTE BY RAND() SORT BY RAND()LIMIT <N rows to sample>;
有兴趣的朋友可以进一步参考博客:
``` -- 不包含进度节点的表(维度分布表) -- 筛选条件 项目名称、项目编码 create temp view hive_view as SELECT P6.name task_name, P7.name task_type, P8.name principal_role, P9.name principal, P6.standard_work_hour, P6.has_output_package is_delivery_stuff, P3.name task_state, P6.predecessor front_task, P6.plan_starttime, P6.plan_endtime, P6.real_starttime, P6.real_endtime, P6.real_duration, P4.name task_department, P10.name delivery_name, p6.publish_time, P6.wfstate flow_state, P6.code task_code, P6.task_grade, P6.important_task, CURRENT_TIMESTAMP() edit_time FROM view.ic_dev15oc_mart.view_dwd_plm_imp_plm_pm_prj_t_17010_hw_dev15oc_1054010535 P6 LEFT JOIN view.ic_dev15oc_mart.view_ods_plm_imp_plm_pm_task_type_17010_dev15oc_1054010535 P7 ON P6.type_id = P7.id LEFT JOIN view.ic_dev15oc_mart.view_ods_plm_imp_plm_pm_role_17010_dev15oc_1054010535 P8 ON P6.principal_role = P8.id LEFT JOIN view.ic_dev15oc_mart.view_ods_plm_bd_staff_17010_dev15oc_1054480385 P9 ON P6.principal = P9.id LEFT JOIN view.ic_dev15oc_mart.view_ods_plm_imp_base_lc_st_17010_dev15oc_1054010535 P3 ON P6.lifecycle_attrpool_id = P3.id LEFT JOIN view.ic_dev15oc_mart.view_ods_plm_org_admin_17010_dev15oc_1054480402 P4 ON P6.principal_dept = P4.id LEFT JOIN view.ic_dev15oc_mart.view_ods_plm_imp_plm_pm_prj_t_dt_17010_dev15oc_1054010535 P10 ON P6.id = P10.taskid; insert overwrite table ic_dev15oc_mart.ads_oo_po_vehicle_model_state_list_bi select * from hive_view;```- Cannot safely cast 'is_delivery_stuff': string to boolean - Cannot safely cast 'plan_starttime': string to timestamp - Cannot safely cast 'plan_endtime': string to timestamp - Cannot safely cast 'real_starttime': string to timestamp - Cannot safely cast 'real_endtime': string to timestamp - Cannot safely cast 'real_duration': string to decimal(10,2) - Cannot safely cast 'publish_time': string to timestamp - Cannot safely cast 'important_task': string to boolean
最新发布
03-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值