Hive

hive动态分区

删除回忆录丶 提交于 2020-12-21 03:58:26
往hive分区表中插入数据时,如果需要创建的分区很多,比如以表中某个字段进行分区存储,则需要复制粘贴修改很多sql去执行,效率低。因为hive是批处理系统,所以hive提供了一个动态分区功能,其可以基于查询参数的位置去推断分区的名称,从而建立分区。 1.创建一个单一字段分区表 hive> create table dpartition(id int ,name string ) partitioned by(ct string ); 2.往表里装载数据,并且动态建立分区,以city建立动态分区 hive> set hive.exec.dynamici.partition=true; #开启动态分区,默认是false set hive.exec.dynamic.partition.mode=nonstrict; #开启允许所有分区都是动态的,否则必须要有静态分区才能使用。 insert overwrite table dpartition partition(ct) select id ,name,city from mytest_tmp2_p; 要点:因为dpartition表中只有两个字段,所以当我们查询了三个字段时(多了city字段),所以系统默认以最后一个字段city为分区名,因为分区表的 分区字段默认也是该表中的字段,且依次排在表中字段的最后面

Hive动态分区

与世无争的帅哥 提交于 2020-12-21 03:01:36
Hive动态分区 一)hive中支持两种类型的分区: 静态分区SP(static partition) 动态分区DP(dynamic partition) 静态分区与动态分区的主要区别在于静态分区是手动指定,而动态分区是通过数据来进行判断。详细来说,静态分区的列实在编译时期,通过用户传递来决定的;动态分区只有在SQL执行时才能决定。 二)实战演示如何在hive中使用动态分区 1、创建一张分区表,包含两个分区dt和ht表示日期和小时 CREATE TABLE partition_table001 ( name STRING, ip STRING ) PARTITIONED BY (dt STRING, ht STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"; 2、启用hive动态分区,只需要在hive会话中设置两个参数: set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrict; 3、把partition_table001表某个日期分区下的数据load到目标表partition_table002 使用静态分区时,必须指定分区的值,如: create table if not exists partition

Hive自定义分区器流程

家住魔仙堡 提交于 2020-12-20 23:03:54
Hive自定义分区器流程 1. 环境说明 当前环境采用Hadoop3.1.3以及Hive3.1.2版本! 2. 自定义类 自定义类实现org.apache.hadoop.mapred.Partitioner(必须为这个,Hive中使用的是老的API)接口,这里只是做测试,所以所有数据我现在全部发送至0号分区 注意分区器中Key和Value类型!!! package com.wh; import org.apache.hadoop.hive.ql.io.HiveKey; import org.apache.hadoop.io.BytesWritable; import org.apache.hadoop.mapred.JobConf; import org.apache.hadoop.mapred.Partitioner; public class MyPartitioner implements Partitioner<HiveKey, BytesWritable> { //实现每条数据的分区逻辑(这里选择将所有数据发送至0号分区) @Override public int getPartition(HiveKey s, BytesWritable s2, int numPartitions) { return 0; } //读取配置信息的方法 @Override public

HBase的Shell命令和JavaAPI

白昼怎懂夜的黑 提交于 2020-12-18 07:56:08
HBase的shell操作和JavaAPI的使用: Shell 表操作 创建表 create 'student','info' #表名 列族 插入表 put 'student','1001','info:sex','male' put 'student','1001','info:age','18' put 'student','1002','info:name','Janna' put 'student','1002','info:sex','female' put 'student','1002','info:age','20' 查看表数据 scan 'student' scan 'student',{STARTROW => '1001', STOPROW => '1002'} #左闭右开 scan 'student',{STARTROW => '1001'} 查看表结构 describe 'student' desc 'student' #效果相同 更新指定字段 put 'student','1001','info:name','Nick' put 'student','1001','info:age','100' # 表明 rowkey 列族:列 值 查看指定行数据 get 'student','1001' 统计表行数 count 'student' 删除数据

6.2_基于协同过滤推荐系统

那年仲夏 提交于 2020-12-18 06:36:08
基于协同过滤的推荐系统 为了让推荐结果符合用户口味,我们需要深入了解用户和物品。用户的兴趣是不断变化的,但用户不会不停的更新兴趣描述。最后,很多时候用户并不知道自己喜欢什么,或者很难用语言描述自己喜欢什么,因此,我们需要通过算法自动发觉用户行为数据,从用户的行为中推测用户的兴趣,从而给用户推荐满足他们兴趣的物品。通常我们会给用户推荐其它用户看过的物品,或者是浏览物品相关的类似商品。 基于用户行为分析的推荐算法是个性化推荐系统的重要算法,学术界一般将这种类型的算法称为协同过滤算法。顾名思义,协同过滤就是指用户可以齐心协力,通过不算地和网站互动,使自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而来满足自己的需求 用户行为数据简介 用户行为数据最简单的存在形式就是日志。网站在运行过程中都产生大量原始日志,并将其存储在文件系统中。很多互联网业务会把多种原始日志按照用户行为汇总成会话日志。推荐系统和电子商务网站就会将原始日志描述成用户行为的会话日志。会话日志同存储在分布式数据仓库中,如支持离线分析的Hadoop Hive。这些日志记录了用户的各种行为,如在电子商务网站中这些行为主要包括网页浏览、购买、点击、评分和评论等。 用户行为在个性化推荐系统中一般分为两种:显性反馈行为和隐性反馈行为。显性反馈行为包括用户明确表示对物品喜好的行为。这些主要的方式都是采用评分和喜欢

AnalyticDB 如何支撑数据银行超大规模低成本实时分析

岁酱吖の 提交于 2020-12-16 03:55:07
前言 数据银行是一款品牌消费者运营的商业数据产品,由于其核心分析能力需要在海量数据上实现任意维度自由分析和响应时间上的强需求,我们大规模使用AnalyticDB作为底层的分析引擎,最终以较低的成本,出色的性能,支撑了上万品牌商大促期间每天百万级的OLAP查询。 当前数据银行在AnalyticDB中存储了约几十万亿条数据,占用存储空间约1.6P,查询平均响应时间在5秒以内。 数据银行业务介绍 数据银行作为消费者运营的商业数据产品,提供了链路流转分析、人群圈选、人群画像等众多数据能力。 链路流转分析 AIPL是数据银行的特有指标,用于衡量品牌和消费者关系的指标(AIPL是4个阶段的缩写,分别是A认知、I兴趣、P购买、L忠诚),链路流转分析用于获取品牌任意两天消费者AIPL关系的变化(如下图,某品牌在某个类目下,从去年双十一到今年双十一AIPL的变化,非真实数据)。 在这个场景,用户可以选择近540天内的任意两个日期,加上品牌和类目这两个维度,用户可能的输入情况在 百万亿级别 。 人群画像 人群画像是消费者运营产品的核心能力,数据银行除了可以针对用户沉淀的具体人群进行画像操作,还可以对链路流转的人群进行画像以帮助品牌分析消费者关系变化的原因(如下图,某品牌去年双十一是购买状态但今年双十一是流失状态的人群画像,非真实数据)。 在这个场景,数据银行为用户提供了200多个标签,大部分为行业相关

Hadoop小文件利器Ozone

那年仲夏 提交于 2020-12-12 22:59:34
大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! Ozone诞生的背景 众所周知,HDFS是大数据存储系统,并在业界得到了广泛的使用。但是无论大集群还是小集群其扩展性都受NN的限制, 虽然HDFS可以通过Federation进行扩展,但是依然深受小文件和4亿个文件的困扰 。 于是分布式key-value存储系统Ozone诞生了,Ozone能够轻松管理小文件和大文件。(HDFS提供了类似POSIX的语义,Ozone的外观和行为更像一个Object存储系统。) Ozone Ozone是专门为Hadoop设计的可扩展的分布式对象存储系统。Hadoop生态中的其它组件如Spark、Hive和Yarn不需要任何修改就可以直接运行在Ozone之上。 Ozone的使用方式也较为丰富,可以通过命令行直接使用也有java客户端接口,而且接口支持RPC和REST。 Ozone由 volumes、buckets和Keys 组成,其中 Volumes只有管理员能够创建和删除,类似账号的概念,管理员一般都是给某个团队或者组织创建一个Volume。 Buckets有点像目录, 不过这个只能有一层,因为Buckets中不能包含其它Buckets 。Buckets是在Volume下,一个Volume可以包含n个Buckets, 但是Buckets下面只能是Keys

CentOS7安装mysql-server

谁说胖子不能爱 提交于 2020-12-12 19:53:55
在Hive中,Derby数据库只能起一个实例,不能在多个终端同时运行,这就产生了许多禁锢,因此对于元数据的存储,采用开源的mysql数据库,因此就需要在主节点上安装mysql相关服务。 0、首先,通过yum list | grep mysql命令来查找yum源中是否有MySQL,我的查询结果如下; 可以看出,总之看不到mysql-server的影子,具体彻底删除还可以参考这个博文:https://www.cnblogs.com/cyl048/p/6879085.html (据说centOS7的源中暂时没有mysql,但是相同版本的centOS在阿里云中可以直接使用yum install mysql-server来直接安装mysql的) 因此,可以通过找到mysql的安装源,如下: 1、先下载mysql的repo源 $ wget http://repo .mysql .com/mysql-community-release-el7- 5.noarch .rpm 2、安装源包,即安装mysql-community-release-el7-5.noarch.rpm包 $ sudo rpm -ivh mysql -community -release -el7 - 5.noarch .rpm 安装这个包后,就会获得两个mysql的yum repo源: /etc/yum.repos.d

什么是spark(一) 分区以及和MR的区别

久未见 提交于 2020-12-12 15:29:04
  什么是spark,是一个 分布式计算平台,或者说是分布式计算引擎 ,他的职责就是将指定的数据读入到各个node的内存中,然后计算。所以spark是具有泛化性质的, 只要数据源是可读入的,读到内存里面之后,处理就和数据源没有关系了 ,你是HBASE,kudu,还是parquet都无所谓了。   什么是RDD,弹性分布式数据集,其实RDD是一个抽象概念,因为RDD本身不包含数据, 它只包含数据描述以及对于数据的算法 ,比如一个sparkSQL返回的RDD其实就是一个对数据的描述,告诉各个节点的executor要处理那些数据,那么map就是算法,map里面的函数体就是算法,所以map又叫做算子。   什么是spark分区,“ 需要把相同 key 的元素聚集到同一个 partition 下,所以造成了数据在内存中的重新分布,即 shuffle 操作 ”,简单讲就是设置数据分布, 将相同key的数据分布到同一台机器 ;为什么要分区?首先明白分区的目的好处就是:   1)减少了网络开销;   2)提高并行计算度;   前者的实现是通过将join算子和hive参数放置到同一台机器,然后让发起join的表数据推送到spark的分区节点进行运算;至于后者,每个分区都有独立的线程(每个线程执行的逻辑称之为Task);可以保持彼此独立,并行进行计算,这个也是spark的机制所在。  

Flink 消息聚合处理方案

时间秒杀一切 提交于 2020-12-12 13:53:53
微博机器学习平台使用 Flink 实时处理用户行为日志和生成标签,并且在生成标签后写入存储系统。 为了降低存储系统的 IO 负载,有批量写入的需求,同时对数据延迟也需要进行一定的控制,因此需要一种有效的消息聚合处理方案。 在本篇文章中我们将详细介绍 Flink 中对消息进行聚合处理的方案,描述不同方案中可能遇到的问题和解决方法,并进行对比。 基于 flatMap 的解决方案 这是我们能够想到最直观的解决方案,即在自定义的 flatMap 方法中对消息进行聚合,伪代码如下: 对应的作业拓扑和运行状态如下: 该方案的优点如下: 逻辑简单直观,各并发间负载均匀。 flatMap 可以和上游算子 chain 到一起,减少网络传输开销。 使用 operator state 完成 checkpoint,支持正常和改并发恢复。 与此同时,由于使用 operator state,因此所有数据都保存在 JVM 堆上,当数据量较大时有 GC/OOM 风险。 使用 Count Window 的解决方案 对于大规模 state 数据,Flink 推荐使用 RocksDB backend,并且只支持在 KeyedStream 上使用。与此同时,KeyedStream 支持通过 Count Window 来实现消息聚合,因此 Count Window 成为第二个可选方案。 由于需要使用 KeyedStream