spark
dinghua_xuexi
这个作者很懒,什么都没留下…
展开
-
利用lit和typeLit为spark dataframe增加常量列 & udf函数传入额外参数
有时候由于数据处理需要,我们会为dataframe添加一个常量列,本文介绍向dataframe添加常量列的方法。使用typedLit函数通过函数:org.apache.spark.sql.functions.typedLit,可以添加List,Seq和Map类型的常量列。scala> val df1 = sc.parallelize(Seq("Hello", "world")).toDF()df1: org.apache.spark.sql.DataFrame = [value: st原创 2020-12-17 18:06:38 · 4182 阅读 · 0 评论 -
spark stream 的双流join
背景在构建实时数仓过程中,有时需要将两个实时数据源进行关联,生成大宽表数据,这时就不得不用到双流join。场景比如有这样的场景,订单实时数据源,和订单物品实时数据源。订单数据源有订单id,下单时间,订单金额,收货人,收货地址等信息,订单商品数据源有订。单号id,商品名称,商品品牌,商品价格,商品成交价格,商品所属商家。订单和订单商品一般是一对多的关系。生成订单大宽表数据,需要将订单的每一件商品信息都关联上订单详细信息。面临问题我们使用流数据join,不像静态数据那么简单。我们知道静态数据原创 2020-08-11 21:37:13 · 1332 阅读 · 0 评论 -
Spark SQL 小数据聚合的坑
摘要在spark sql中,聚合操作,如分组求和,join,分组TopN等,是很常见的,有的时候,我们会遇到这样的情况,数据量并不大,但是聚合起来,需要花费不少时间。俗话说,事出反常必有妖,背后一定有某种原因导致了这种情况。本篇文章介绍了其中一种场景,希望能为大家带来启示。场景展现程序代码我们写两个简单的spark socket流程序,使用nc命令手动发数据,然后对收到的数据进行简单的汇总,不涉及任何复杂操作,程序代码如下 val spark = SparkSession.builde原创 2020-08-07 11:06:28 · 338 阅读 · 0 评论 -
Spark SQL的jdbc数据源如何确定数据分区
摘要本篇文章主要分析spark sql在加载jdbc数据时,比如通过jdbc方式加载MySQL数据时,分区数如何确定,以及每个分区加载的数据范围。通过本篇文章的分析,以后我们在用spark读取jdbc数据时,能够大致明白底层干了什么事情,以及避免一些坑。spark dataframe的jdbc接口 /** * Construct a `DataFrame` representing the database table accessible via JDBC URL * url n原创 2020-08-05 16:47:36 · 1855 阅读 · 0 评论 -
编译spark源码: 将spark源码导入IDEA
1 下载好spark源码,解压2 打开IDEA --> 顶部工具栏【File】 --> 【New】 --> 【Project from ExistingSources】3 为该项目配置好Maven,而不是默认的IDEA自带的Maven4 先选中这个Project,鼠标右键 ---> 【Maven】 --> 【Generate Sources and Update Folders】5 顶部工具栏【Build】 --> 【Build Project】,等...原创 2020-05-19 20:13:35 · 296 阅读 · 0 评论