Hive环境搭建
环境准备
Hive需要依赖如下环境
集群的拓扑如下
安装MySQL
安装MySQL
123456789101112# 安装mysql的yum源yum install wgetwget https://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpmyum install mysql80-community-release-el7-1.noarch.rpmyum update -y# 安装mysqlyum install mysql-community-server# 配置mysql的开机自启systemctl start mysqldsystemctl enable mysqld
安装踩坑
我这里安装报错提示如下
12345678910warning: /var/cache/yum/x86_64/7/mysql80-community/packages/mysql-community-common-8.0.28-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, ...
Leetcode-398-随机数索引
题目
398. 随机数索引
给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。
注意:
数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。
示例:
int[] nums = new int[] {1,2,3,3,3};
Solution solution = new Solution(nums);
// pick(3) 应该返回索引 2,3 或者 4。每个索引的返回概率应该相等。
solution.pick(3);
// pick(1) 应该返回 0。因为只有nums[0]等于1。
solution.pick(1);
解题
方法一(暴力)
遍历一遍数组nums,每个nums的元素都作为一个key,将下标记录到一个哈希表中的对应key所属的集合中,pick时候查找哈希表,在查询出的集合中随机挑选一个返回。
123456789101112131415class Solution {public: unordered_map<int, vector<int>> mv; ...
Hive简单应用
第一步:创建数据库
首先通过show databases命令查看已存在的数据库。然后使用create命令创建一个新的数据库,在本实验中命名为“demo+学号后4位”。
show databases;
1CREATE DATABASE IF NOT EXISTS demo0740;
12345678910hive> CREATE DATABASE IF NOT EXISTS demo0740;OKTime taken: 0.074 secondshive> show databases;OKdefaultdemo0740testTime taken: 0.038 seconds, Fetched: 3 row(s)
第二步:使用创建的数据库
使用USE命令,将你创建的demo数据库设置为当前使用的数据库。
use demo0740;
第三步:创建表
通过create table命令创建一个表,表名users,创建完成后,用describe 表名 命令查看建表结果,确保建表成功。表属性包含:
id:int,记录编号,具有唯一性
uid:string,用户id
item_i ...
HBase基本操作
常用HBase Shell命令
创建表
12/* 创建表,cf1,cf2为列族名 */create 'table_name','cf1','cf2',...
写入数据
12/* 插入或更新数据,cf为列族名,cq为列名,value为要写入的数据 */put 'table_name', 'row_key', 'cf:cq', 'value'[, timestamp]
读取数据
12345678/* 读取单行数据 */get 'table_name', 'row_key'/* 读取列族数据 */get 'table_name', 'row_key', 'cf'/* 读取单元格数据 */get 'table_name', 'row_key', 'cf:cq'
删除数据
12345/* 删除列 * ...
二维凸包
概念
具体概念参考
凸包 - 维基百科,自由的百科全书 (wikipedia.org)
如图,在二维欧几里得空间中,凸包可想象为刚好包裹所有点的橡皮圈。
算法
Graham扫描算法
Graham扫描法(葛立恒扫描法)的原理:沿逆时针方向通过凸包时,在每个点处应该向左拐,而删除出现左拐的点。
<未完待续>
Leetcode-587-安装栅栏
题目
587. 安装栅栏
在一个二维的花园中,有一些用 (x, y) 坐标表示的树。由于安装费用十分昂贵,你的任务是先用最短的绳子围起所有的树。只有当所有的树都被绳子包围时,花园才能围好栅栏。你需要找到正好位于栅栏边界上的树的坐标。
示例 1:
输入: [[1,1],[2,2],[2,0],[2,4],[3,3],[4,2]]
输出: [[1,1],[2,0],[4,2],[3,3],[2,4]]
解释:
示例 2:
输入: [[1,2],[2,2],[4,2]]
输出: [[1,2],[2,2],[4,2]]
解释:
即使树都在一条直线上,你也需要先用绳子包围它们。
注意:
所有的树应当被围在一起。你不能剪断绳子来包围树或者把树分成一组以上。
输入的整数在 0 到 100 之间。
花园至少有一棵树。
所有树的坐标都是不同的。
输入的点没有顺序。输出顺序也没有要求。
分析
HBase环境搭建
HBase集群架构
准备工作
新建四台虚拟机
master, slave1, slave2, slave3
分别设置固定IP
确认已经搭建好Hadoop集群,见如下文章
Hadoop环境搭建
配置完成后拓扑如下,
HBase需要依赖ZooKeeper集群进行数据管理,HBase数据库也需要分别在多个节点搭建,
故HBase配置完毕之后的拓扑结构如下,
ZooKeeper集群安装
简介
Apache ZooKeeper
ZooKeeper是一个分布式服务框架,主要用来解决分布式系统中经常遇到的数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项等等。
基本工作过程
上图描述的就是一个ZooKeeper的节点计算图。
由若干个Server和若干个Client所够成,其中所有Server之间只有一个特殊的节点叫Leader,其余Server节点叫做Follower
如当某个Client对Server1发起写请求时,
数据将会写入这个Server1
这个Server1将会变更后传递到Leader
Leader将变更同步到所有的Server,同步的 ...
Leetcode-396-旋转函数
题目
396. 旋转函数
给定一个长度为 n 的整数数组 nums。
假设 arrk是数组 nums顺时针旋转 k 个位置后的数组,我们定义 nums 的 旋转函数 F 为:
F(k) = 0 * arrk[0] + 1 * arrk[1] + ... + (n - 1) * arrk[n - 1]
返回 F(0), F(1), ..., F(n-1)中的最大值 。
生成的测试用例让答案符合** 32 位** 整数。
示例 1:
输入: nums = [4,3,2,6]
输出: 26
解释:
F(0) = (0 * 4) + (1 * 3) + (2 * 2) + (3 * 6) = 0 + 3 + 4 + 18 = 25
F(1) = (0 * 6) + (1 * 4) + (2 * 3) + (3 * 2) = 0 + 4 + 6 + 6 = 16
F(2) = (0 * 2) + (1 * 6) + (2 * 4) + (3 * 3) = 0 + 6 + 8 + 9 = 23
F(3) = (0 * 3) + (1 * 2) + (2 * 6) + (3 * 4) ...
MapReduce环境搭建
需求分析
使用MapReduce完成一个词频统计Word Count程序,
如下图,新建一个文本,保存在本机上的input.txt中。
12a a b b b c c c c d de f f
统计input.txt中的各单词出现的数目。
环境配置
进入Maven仓库搜索hadoop, 下载hadoop client
Maven Repository: org.apache.hadoop » hadoop-client (mvnrepository.com)
选择自己的hadoop版本,
将Maven的依赖定义复制下来。
打开idea新建一个maven项目
编辑pom.xml将复制的依赖定义粘贴进去
同步依赖完毕后,红色消失,
代码编写
MyMapper.java
1234567891011121314151617181920import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;import ja ...
HDFS基本操作
在HDFS上创建文件
启动HDFS
运行脚本start-dfs.sh
1234567[root@master ~]# start-dfs.shStarting namenodes on [master]Last login: Sat Apr 16 20:09:41 CST 2022 from 192.168.166.1 on pts/0Starting datanodesLast login: Sat Apr 16 20:13:05 CST 2022 on pts/0Starting secondary namenodes [master]Last login: Sat Apr 16 20:13:07 CST 2022 on pts/0
运行脚本start-yarn.sh
12345[root@master ~]# start-yarn.shStarting resourcemanagerLast login: Sat Apr 16 20:13:14 CST 2022 on pts/0Starting nodemanagersLast login: Sat Apr 16 20:32 ...