数据仓库之数仓分层
上一步实现了SparkStructuredStreaming写hive动态分区表:数据仓库之SparkStructuredStreaming写hive动态分区表 | 62bit的秘密基地
这一步分一下层,把上一步解耦一下
建库12CREATE DATABASE ods;CREATE DATABASE dw;
后来意识到可以用spark sql远程建库,需要配置spark.sql.warehouse.dir(2023.4.7)
123456val spark = SparkSession.builder().config(conf) .config("hive.metastore.uris","thrift://192.168.52.120:9083") .config("spark.sql.warehouse.dir", "hdfs://192.168.52.100:8020/user/hive/warehouse") .enableHiveSupport() .getOrCreate()spar ...
数据仓库之SparkStructuredStreaming写hive动态分区表
上一步完成了Spark远程连接Hive的测试:数据仓库之Spark远程连接Hive | 62bit的秘密基地
这一步是StructuredStreaming写hive动态分区表
准备工作启动hiveserver2和hive元数据管理服务在hive目录中
12bin/hiveserver2bin/hive --service metastore
启动Kafka集群1sh kfk.sh start
分区规则按照时间来动态分区
pubdata字段中的数据都是 xxxx-xx-xx 当日时间 这种形式
我想要按照年份(year)和本年第几周(week)来做动态分区表
先将 xxxx-xx-xx 当日时间 拆分成 xxxx-xx-xx 和 当日时间 的形式,命名为date和time
12val df2 = df.withColumn("date",split(col("pubdate"), " ").getItem(0)) .withColumn("time", split(col("pubd ...
数据仓库之Spark远程连接Hive
上一步完成了SparkStructuredStreaming实时消费Kafka:数据仓库之Spark Structured Streaming实时消费Kafka | 62bit的秘密基地
首先在hive中创建一个表用于测试
12345678CREATE DATABASE test_db;USE test_db;CREATE TABLE test(id int,name string)ROW FROMAT DELIMITED FIELDS TERMINATED BY ',';INSERT INTO TABLE test VALUES(1, 'zhangsan');
Hive踩坑——使用逗号分隔符注意事项 - 代码先锋网 (codeleading.com)
开启hiveserver2和hive元数据服务
12bin/hiveserver2bin/hive --service metastore
导包
12345<dependency> <groupId>org.apache.spark</groupId> ...
数据仓库之Spark Structured Streaming实时消费Kafka
上一步完成了数据接入:数据仓库之数据接入 | 62bit的秘密基地
这一步先尝试以下Spark Structured Streaming实时消费kafka
代码
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647import org.apache.spark.SparkConfimport org.apache.spark.sql.streaming.{OutputMode, Trigger}import org.apache.spark.sql.{DataFrame, SparkSession}import com.alibaba.fastjson.JSONobject KafkaConsumer { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("StructuredStream ...
数据库三大范式学习笔记
什么是数据库三大范式数据库三大范式是数据库设计表结构所遵循的规范和指导方法,目的是为了减少冗余,建立结构合理的数据库,从而提高数据存储和使用的性能。三大范式之间是具有依赖关系的,比如第二范式是在第一范式的基础上建设的、第三范式是在第二范式的基础上建设的。
第一范式(确保每列保持原子性):如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库满足第一范式。
第二范式(确保表中的每列都和主键相关):第二范式需要确保数据库表中每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
第三范式(确保每列都和主键列直接相关,而不是间接相关):第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系,而不可以在订单表中添加关于客户其他信息(比如姓名、所属公司)的字段。
举例说明假设我们有一个学生信息表,如下所示:
学号
姓名
性别
年龄
班号
班级
专业
学院
1001
张 ...
数据仓库之数据接入
前段时间尝试了爬虫,就想着这些数据在我学习大数据的路上能派上什么用场,于是构思了一个小项目来练手,大概的逻辑就是尝试将数据存入分布式数仓中,然后展示
基础结构pyhton爬虫 -> csv -> filebeat -> kafka -> spark -> hive -> mysql -> python可视化
组件Hadoop 、Filebeat、Kafka、Spark、Hive、MySQL
第一步:爬虫编写参考我之前写的爬虫
爬虫初体验| 62bit的秘密基地
第二步:数据接入模拟数据实时写入脚本(生产者脚本)写个shell脚本模拟数据实时写入
123456789101112#!/bin/bashIFS=$'\n' # 设置换行符为字段分隔符data=($(cat /home/myproject/data/bili.csv)) # 使用 cat 命令读取文件内容,并将其赋值给 data 数组for line in "${data[@]}"do echo $line >> ...
数据结构与算法复习之最长回文子串Manacher算法
力扣链接:5. 最长回文子串 - 力扣(Leetcode)
参考:
基础提升:3 KMP、Manacher算法等_哔哩哔哩_bilibili
算法学习笔记 | 62bit的秘密基地
解法一 中心扩散以“122131121”为例,把每个字符当作一共回文串的中心,向两边扩散,记录最长的回文串的长度,但是这样会漏掉长度为偶数的回文串(例如1221),可以用特殊字符(例如 ’#‘)将每个字符分开,于是原始字符串变成了“#1#2#2#1#3#1#1#2#1#”,这样再用中心扩散法,然后把最后的答案除以2即可得到长度
1234567891011121314151617181920212223242526272829303132333435363738class Solution { public String longestPalindrome(String s) { int n = s.length() * 2 + 1; char[] newStr = new char[n]; int idx = 0; for(i ...
爬虫初体验
想要爬取b站过年期间各个分区的热门视频信息,作为学习爬虫的小练习
查看robots.txt:https://www.bilibili.com/robots.txt
1234567891011User-agent: Yisouspider Allow: /User-agent: Applebot Allow: /User-agent: bingbot Allow: /User-agent: Sogou inst spider Allow: /User-agent: Sogou web spider Allow: /User-agent: 360Spider Allow: /User-agent: Googlebot Allow: /User-agent: Baiduspider Allow: /User-agent: Bytespider Allow: /User-agent: PetalBot Allow: /User-agent: * Disallow: /
这意味着b站允许Yisouspider、Applebot、bingbot、Sogou inst spider、Sogou ...
关于笔记本电脑摄像头显示正常工作却没有图像的问题
今天要用到笔记本摄像头却突然发现用不了了,笔记本摄像头的提示灯是亮着的,检查电脑设置和设备管理器发现摄像头也在正常工作,但是显示如下画面:
起初以为是我用的软件(OBS)有问题,就去更新了OBS(OBS更新是真慢啊),但是没有解决问题,又去重新安装的驱动,也没有解决问题。
最后发现是万恶的联想电脑管家把摄像头设置成了隐私模式,导致设备显示正常工作但是没有图像!浪费了我两个小时!
解决方法如下:
打开联想电脑管家找到右上角的实用工具
打开桌面助手
找到隐私组件
打开摄像头权限
Hive学习笔记
数据仓库和数据库的区别
用途:
数据库主要用于事务处理,即对数据进行增删改查等操作,支持在线应用和实时查询;
数据仓库主要用于数据分析,即对数据进行汇总、统计、挖掘等操作,支持离线批处理和复杂查询。
数据:
数据库存储的是当前的、细节的、原始的业务数据,通常是面向应用的;
数据仓库存储的是历史的、汇总的、清洗过的分析数据,通常是面向主题的。
结构:
数据库采用范式化(Normalized)的表结构,遵循数据库三大范式,减少冗余和异常,提高存储效率和一致性;
数据仓库采用反范式化(Denormalized)或多维(Dimensional)的表结构,增加冗余和索引,提高查询效率和易用性。
优化:
数据库对读写都有优化,需要保证事务的原子性、一致性、隔离性和持久性(ACID);
数据仓库只对读有优化,不需要保证ACID,但需要保证可扩展性和容错性。
反范式化的表结构(Denormalized)反范式化或多维的表结构是指在数据仓库中,为了提高查询效率和易用性,而选择性地违反范式化规则,增加冗余数据或者对维度表进行层次化的设计方式。
反范式化有两种常见的方式:Rolldown和 ...