SPARK_SQL_01

1.聚合函数:

2.UDF:User Defined Function

* 1、编写的UDF可以放到SQL语句的select部分,也可以作为where、groupBy或者having子句的一部分。

* 2、UDF是一个函数,但是UDF不仅仅是一个函数,有自己的特殊性:需要将UDF的参数看做数据表的某个列

* 3、在使用UDF时,不一定非要传入列,还可以传入常量

* spark.udf.register("largerThan", (z:String,number:Long) => z.toLong>number)

* 4、使用Dataset API和UDF的时候,上述注册方法,对DataFrame API不可见,改为下面的方法:

* val zipToLongUDF=udf((z:String) => z.toLong)

* val largerThanUDF = udf((z: String, number: Long) => z.toLong>number)

*zipDS.select(col("city"),zipToLongUDF(col("zip")).as("zipToLong"),largerThanUDF(col("zip"),lit("99923")).alias("largerThan")).orderBy(desc("zipToLong")).show();

*/

3.Spark On Hive

安装:

1、将hive_home/conf下面的hive-site.xml拷贝到spark_home/conf下面

2、将hadoop_home/etc/hadoop下面的hdfs-site.xml和core-site.xml拷贝到spark_home/conf下面

3、在拷贝到spark_home/conf所在节点上以local模式启动spark-sql

4、如果hive的metastore是mysql数据库,需要将mysql驱动放到spark_home/jars目录下面

5、开发环境:在项目中创建文件夹conf,将上述三个文件放入conf目录。如果hive的metastore是mysql数据库,需要将mysql驱动放到项目的类路径下

val spark = SparkSession .builder() .master("local[*]") .appName("Spark Hive Example")    

                                                .enableHiveSupport()//启用对hive的支持

                                            .getOrCreate()

如果版本高于1.2.1,设置hive-site.xml中的属性,避免报错:  

5、模块运行

不需要启动hive,需要启动HDFS,不需要启动YARN

6、Spark On Hive的内部机制

spark读取hive-site.xml配置文件,获得hive的metastore和warehouse相关信息。如果在hive-site.xml中没有定义,那么就会在当前目录创建一个metastore_db ,然后根据spark.sql.warehouse.dir 的值创建warehouse目录,默认的warehouse地址是/user/hive/warehouse。

Metastore的作用是:客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容