Snippet 博客主题

技术

Spark实例-自定义聚合函数

Spark自定义聚合函数时,需要实现UserDefinedAggregateFunction中8个方法: inputSchema:输入的数据类型 bufferSchema:中间聚合处理时,需要处理的数据类型 dataType:函数的返回类型 deterministic:是否是确定的 initialize:为每个分组的数据初始化 update:每个分组,有新的值进来时,如何进行分组的聚合计算 merge:由于Spark是分布式的,所以一个分组的数据,可能会在不同的节点上进行局部聚合,就是update,但是最后一个分组,在各节点上的聚合值,要进行Merge,也就是合并 evaluate:一个分组的聚合值,如何通过中间的聚合值,最后返回一个最终的聚合值实例代码:…

Parquet元数据合并

当文件使用Parquet格式时,如果多次生成的文件列不同,可以进行元数据的合并,不用再像关系型数据库那样多个表关联。关键点sqlContext.read.option("mergeSchema",true)…

Spark实例-操作Hive数据

Spark操作Hive数据库,实现数据表创建,数据加载,以及数据查询。实例代码如下:…

Spark实例-DataFrame加载和保存数据

Spark加载不同格式文件时,调用sqlContext.read.format(“”).load方法 1val peopleDF=sqlContext.read.format("json").load("E:\\spark\\src\\main\\resources\\people.json") Spark将DataFrame写入到文件中时,调用DF.write.format(“”).save方法 12345peopleDF.select("name") .write.format("parquet") //.mode(SaveMode.ErrorIfExists) .mode(SaveMode.Append) .save("E:\\spark\\src\\main\\resources\\people") …

Spark实例-每天每个搜索词用户访问

1.需求分析根据平台的日志记录,统计处每天每个搜索词访问的UV,并把排名前三的搜索词及其UV打印出来。 2.数据格式日期 用户 搜索词 城市 平台 版本…

Hbase安装

1. 解压缩hbase的软件包1[yangql@hadoop01 app]$ tar -xvf hbase-1.2.5-bin.tar.gz 2. 进入hbase的配置目录,在hbase-env.sh文件里面加入java环境变量.1export JAVA_HOME=/opt/jdk1.8.0_91 3. 关闭HBase自带的Zookeeper,使用Zookeeper集群1export HBASE_MANAGES_ZK=false…

Hive-《编程指南》学习笔记

基础操作 hive.metastore.warehouse.dir表存储所位于的顶级文件目录,默认是/user/hive/warehouse 可以为不同的用户指定不同的目录,避免相互影响.set hive.metastore.warehouse.dir=/user/myname/hive/warehouse hive默认数据是derby,他会在每个命令启动的当前目录创建metadata_db目录。可以设置hive-site.xml 1javax.jdo.option.ConnectionURL=jdbc:derby:;databaseName=/home/yangql/app/hive/metastore_db;create=true hive配置连接mysql数据库 123456789101112131415161718192021222324<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop01:3306/hive?createDatabaseIfNotExist=true</value> <description> JDBC connect string for a JDBC metastore. To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL. For example, jdbc:postgresql://myhost/db?ssl=true for postgres database. </description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>Username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>root</value> <description>password to use against metastore database</description> </property> …