收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
+ 定义类
```
class 类名:
# 属性:变量
# 方法:函数
```
+ 定义变量
```
key = value
```
+ 定义方法
```
def funName(参数):
方法逻辑
return
```
* 面向对象:将所有事物以对象的形式进行编程,万物皆对象
+ 对象:是类的实例
* **对象类**:专门用于构造对象的,一般称为Bean,**代表某一种实体Entity**
+ 类的组成
```
class 类名:
# 属性:变量
# 方法:函数
```
+ 业务:实现人购买商品
- 人
```
class Person:
# 属性
id = 1
name = zhangsan
age = 18
gender = 1
……
# 方法
def eat(self,something):
print(f"{self.name} eating {something}")
def buy(self,something)
print(f"{self.name} buy {something}")
```
* 每个人都是一个Person类的对象
- 商品
```
class Product:
# 属性
id = 001
price = 1000.00
size = middle
color = blue
……
# 方法
def changePrice(self,newPrice):
self.price = newPirce
```
* **工具类**:专门用于封装一些工具方法的,utils,**代表某种操作的集合**
+ 类的组成:一般只有方法
```
class 类名:
# 方法:函数
```
+ 字符串处理工具类:拼接、裁剪、反转、长度、转大写、转小写、替换、查找
```
class StringUtils:
def concat(split,args\*):
split.join(args)
def reverse(sourceString)
return reverse(sourceString)
……
```
+ 日期处理工具类:计算、转换
```
class TimeUitls:
def computeTime(time1,time2):
return time1-time2
def transTimestamp(timestamp):
return newDateyyyy-MM-dd HH:mm:ss)
def tranfData(date)
return timestamp
```
* **常量类**:专门用于定义一些不会发生改变的变量的类
+ 类的组成:一般只有属性
```
class 类名:
# 属性:不发生变化的属性
```
+ 定义一个常量类
```
class Common:
ODS_DB_NAME = "one_make_ods"
……
```
- file1.py:创建数据库
```
create database if not exists Common.ODS_DB_NAME;
```
* file2.py:创建表
```
```
create table if not exists Common.ODS_DB_NAME.tbname
```
```
+ file3.py:插入数据到表中
```
insert into table Common.ODS_DB_NAME.tbname
```
+ 问题1:容易写错
+ 问题2:不好修改
02:课程目标
- 目标:自动化的ODS层与DWD层构建
- 实现
- 掌握Hive以及Spark中建表的语法规则
- 实现项目开发环境的构建
- 自己要实现所有代码注释
- ODS层与DWD层整体运行测试成功
03:数仓分层回顾
- 目标:回顾一站制造项目分层设计
- 实施
+ ODS层 :原始数据层
- 来自于Oracle中数据的采集
- 数据存储格式:AVRO
- ODS区分全量和增量
- 实现
* 数据已经采集完成
```
/data/dw/ods/one_make/full_imp
/data/dw/ods/one_make/incr_imp
```
* step1:创建ODS层数据库:one\_make\_ods
* step2:根据表在HDFS上的数据目录来创建分区表
* step3:申明分区
+ DWD层
- 来自于ODS层数据
- 数据存储格式:ORC
- 不区分全量和增量的
- 实现
* step1:创建DWD层数据库:one\_make\_dwd
* step2:创建DWD层的每一张表
* step3:从ODS层抽取每一张表的数据写入DWD层对应的表中
-
小结
- 回顾一站制造项目分层设计
04:Hive建表语法
- 目标:掌握Hive建表语法
- 实施
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
(
col1Name col1Type [COMMENT col_comment],
co21Name col2Type [COMMENT col_comment],
co31Name col3Type [COMMENT col_comment],
co41Name col4Type [COMMENT col_comment],
co51Name col5Type [COMMENT col_comment],
……
coN1Name colNType [COMMENT col_comment]
)
[PARTITIONED BY (col_name data_type ...)]
[CLUSTERED BY (col_name...) [SORTED BY (col_name ...)] INTO N BUCKETS]
[ROW FORMAT row_format]
row format delimited fields terminated by
lines terminated by
[STORED AS file_format]
[LOCATION hdfs_path]
TBLPROPERTIES
+ EXTERNAL:外部表类型(删除表的时候,不会删除hdfs中数据)
- 内部表、外部表、临时表
+ PARTITIONED BY:分区表结构
- 普通表、分区表、分桶表
+ CLUSTERED BY:分桶表结构
+ ROW FORMAT:指定分隔符
- 列的分隔符:\001
- 行的分隔符:\n
+ STORED AS:指定文件存储类型
- ODS:avro
- DWD:orc
+ LOCATION:指定表对应的HDFS上的地址
- 默认:/user/hive/warehouse/dbdir/tbdir
+ TBLPROPERTIES:指定一些表的额外的一些特殊配置属性
-
小结
- 掌握Hive建表语法
05:Avro建表语法
-
目标:掌握Hive中Avro建表方式及语法
-
路径
- step1:指定文件类型
- step2:指定Schema
- step3:建表方式
-
实施
-
Hive官网:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-CreateTable
-
DataBrics官网:https://docs.databricks.com/spark/2.x/spark-sql/language-manual/create-table.html
-
Avro用法:https://cwiki.apache.org/confluence/display/Hive/AvroSerDe
-
指定文件类型
- 方式一:指定类型
stored as avro
- 方式二:指定解析类
--解析表的文件的时候,用哪个类来解析 ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' --读取这张表的数据用哪个类来读取 STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' --写入这张表的数据用哪个类来写入 OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
-
指定Schema
- 方式一:手动定义Schema
CREATE TABLE embedded COMMENT "这是表的注释" ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' TBLPROPERTIES ( 'avro.schema.literal'='{ "namespace": "com.howdy", "name": "some\_schema", "type": "record", "fields": [ { "name":"string1","type":"string"}] }' );
- 方式二:加载Schema文件
CREATE TABLE embedded COMMENT "这是表的注释" ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' STORED as INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' TBLPROPERTIES ( 'avro.schema.url'='file:///path/to/the/schema/embedded.avsc' );
-
建表语法
- 方式一:指定类型和加载Schema文件
create external table one_make_ods_test.ciss_base_areas comment '行政地理区域表' PARTITIONED BY (dt string) stored as avro location '/data/dw/ods/one\_make/full\_imp/ciss4.ciss\_base\_areas'
-
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
dw/ods/one_make/full_imp/ciss4.ciss_base_areas’
[外链图片转存中…(img-j0lT7cqq-1715800869470)]
[外链图片转存中…(img-fJ2tYQHs-1715800869470)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)