自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 Delta Lake:文件类型

文件类型Delta Lake 总共有 4 种类型的文件,前 3 种都是记录 commit log 的,最后 1 种是记录数据的:/mytable/_delta_log/00000000000000000000.json/mytable/_delta_log/00000000000000000001.json/mytable/_delta_log/00000000000000000003.json/mytable/_delta_log/00000000000000000003.checkpoint.

2020-11-29 15:00:26 781

原创 Git:常用的命令

Git 常用命令常用命令git add ...:添加本地修改文件到暂存区。git commit -m '<scope>: message':提交修改,<scope> 为本次提交影响的范围,比如修改的是 etl 相关,则 scope 可以为 etl;message 简单描述本次做了哪些修改,不要过于笼统(比如 fix bugs、add features),要具体到做的事情上。完整的比如:etl: add hdfs datasource。git push origin <

2020-11-29 14:27:12 109

原创 Spark:作业提交流程以及提交方式

作业提交流程编写好一个 Spark App,编译成 jar。上传到 Spark 机器,使用 spark-submit 提交作业。根据提交作业的模式启动 Driver,并请求 Cluster Manager 分配资源启动 Executor 线程。Executor 启动后反向注册到 Driver 中,Driver 会分发 jar 包到各个 Executor 上。Driver 上的 SparkContext 会创建 task 发送给 Executor 执行。任务执行完成,进程 kill。作业提交

2020-11-29 13:54:46 1225

原创 Py4J:使用 Python 启动 Spring 获得自动装配并调用 Java 代码

公司交互式数据分析平台选择的是 Apache Zeppelin,可以配置并选择 Spark Interpreter 从而借助 Spark 来进行数据分析。在 Zeppelin 的一个 note 中,可以写 SQL 脚本(段落中使用 %sql 声明使用 SQL Interpreter)、Python 脚本(段落中使用 %pyspark 声明使用 Spark Interpreter),一个 note 中的多个 paragraph 可以使用不同的 interpreter,对于一些复杂的逻辑经常会使用 %pyspa

2020-08-17 22:59:00 470

原创 Python:实用的日期工具方法

Python 中实用的日期方法在工作中,经常要出一些分析报表,常见的有月报、周报、日报,所以经常需要自动获取上月、上周、昨天的时间,封装常用的方法,可以简化脚本。主要是使用相对的时间,这就可以使用 dateutil.relativedelta ,需要注意的一点是月末的日期,因为每个月的天数是不一样的,这个时候在 relativedelta 指定 day=31 就可以自动适配当月最大天数。from dateutil import relativedeltafrom datetime import da

2020-08-17 22:04:26 212

原创 Spark:自定义 udf

Spark SQL 中提供的很多函数可以满足大部分的需求,但有时也需要根据需求自定义函数。项目中有一个需求是,判断某个字段的值是否在某个区间内(前闭后开)或者多个区间内。而 BETWEEN ... AND ... 表示的是前闭后闭,而且只能作用于一个区间。所以就需要实现一个自定义 udf。自定义 udf 有以下步骤:实现 UDF 接口,根据接收参数个数的不同,分为 UDF0、UDF1、UDF2…,除了接收的参数外,还有一个返回值类型。需要实现 call() 方法,在其中实现具体的逻辑。比如就目前的需

2020-08-02 22:47:37 544

原创 Spark:读取文件分区数目的一些思考

最近在项目中遇到一个问题:在阿里云 oss 上有一些 parquet 文件,这些文件是按照 accountId 进行 partitionBy 写入的,有多个 accountId 对应的目录,总共有 4927 个 parquet 文件,总大小约为 7.3GB。但是使用 Spark 读取然后按 accountId partitionBy 写出去的文件结构跟原来的不一致,而预期是原样读取然后原样写出去。查阅了相关资料,发现 Spark 有内存分区和磁盘分区的概念,其中 coalesce() 和 repartit

2020-08-01 23:04:10 681

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除