自定义函数
在使用sql语句的时候会用到函数来对查出来的数据进行再次的操作,可以使用自定义函数来实现自定义的功能
UDF自定义函数
可以使用spark.udf来进行注册添加自定义函数
1 | // 自定义函数名为prefix |
DataFrame是一种以RDD为基础的分布式数据集,类似于关系型数据库的Table表,与RDD的主要区别在于,DataFrame带有schema元信息,表示数据集的每一列都带有名称和类型,而RDD不知道所存数据元素的具体内部结构,只能进行简单、通用的流水线优化。
在Spark Core中使用的是上下文环境SparkContext,而在SparkSQL中使用的是SparkSession,SparkSession是由SparkContext和HiveContext的组合
spark-shell会自动创建SparkContext和SparkSession对象
1 | Spark context available as 'sc' (master = local[*], app id = local-1621927578517). |
sparkSQL是Spark用于结构化数据处理的Spark模块,为了给RDBMS但是又不了解MapReduce的开发人员提供的快速入手的工具,在一开始的时候是基于Hive进行开发的,后来为了摆脱对Hive的依赖,SparkSQL进行了重新开发
在使用线性规划的时候,遇到了一个场景。
这里简单的说一下场景,要求广告要至少投放2个城市,现在有3个城市可供选择。但是城市投放量要么不投,要投放至少投放100cpm。
这种情况下如何转换成线性规划呢?
这里就可以使用大M法,来将非线性约束线性化,引入binary变量(即只有0和1),这里ca={0,1},然后引入一个极大值M,构建如下约束
1 | // 由于有三个城市,这里我们引入3个binary变量,即ca1、ca2、ca3 |
根据自己的情况,来选取M的值