- 博客(9)
- 收藏
- 关注
原创 工作笔记
1.ip映射导包 <dependency> <groupId>org.lionsoul</groupId> <artifactId>ip2region</artifactId> <version>1.7.2</version> </dependency>import org.apache.spark.SparkConfimport org.a
2021-05-11 18:45:55
159
原创 Spark读取mysql千万级数据自定义分区
spark读取mysql表数据时默认是在一个分区内执行,而且spark本身没有设置此种情况下分区的方法。所以我们需要根据特定字段进行自定义分区。第一种是根据Long类型的有序字段,第二种是根据时间字段分区。以下是代码实现import java.sql.{Connection, DriverManager}import java.text.SimpleDateFormatimport java.util.Propertiesimport org.apache.spark.sql.{DataFram
2020-11-25 15:32:26
2202
5
原创 解决git公钥过期或未生成公钥问题
1、开始时git,push失败2、度娘告诉说要去获取公钥,所以需要找到我们本地的git的bash终端$ ssh-keygen -t rsa -C "自己的邮箱"3、输入代码回车以后,会有几个问题,一直按回车就可以(如果之前生成过,那么有个问题是是否需要重新生成,要写y)4、直到生成公钥5、再去执行下边代码$ ssh -v git@github.com如果是第一次注册最后的代码会是 No more authentication methods to try. Permissi
2020-11-05 11:51:05
3389
2
原创 Spark将json数据的字段信息取出并对数值类型计算,结果保存到mysql
大概思想是先取数据,再对数据进行处理,最后将结果保存进Mysqlpackage DataToMysqlimport java.sql.{Connection, DriverManager, PreparedStatement}import java.text.SimpleDateFormatimport org.apache.spark.SparkConfimport org.apache.spark.rdd.RDDimport org.apache.spark.sql.types.{Stri
2020-08-14 15:00:41
496
原创 Flink读取Mysql数据库
Flink操作数据库并没有像Spark那样简洁方便,有点类似java操作mysql的思路。pom依赖 <dependencies> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-scala_2.11</artifactId> <version>1.
2020-08-11 15:06:46
3104
3
原创 Spark消费Kafka并手动维护偏移量到Mysql
首先要明确的是,偏移量指的是消息在kafka中的某个位置,类似于数组的下标,所以我们要做的是消费者在消费过程中把消息消费到了哪一条,把它对应的offset获取到并保存下来。首先我们要有一个生产消息的生产者,生产者代码如下:import java.util.Propertiesimport org.apache.kafka.clients.producer.{KafkaProducer, ProducerRecord}object SparkProducer { def main(args: A
2020-08-10 15:23:46
754
1
原创 Hive自定义UDF并在Hive中注册
1、创建一个类继承自UDF,并重写evaluate方法import org.apache.hadoop.hive.ql.exec.UDF;import java.util.Arrays;public class UDFTest extends UDF { public static String evaluate(String str) { String[] Arr = str.split(","); for(int i = 0;i < Arr.
2020-08-10 10:30:33
682
原创 实际生产环境下Spark一些简单功能的实现
Spark一些简单功能的实现1、批量改变列名val frame = spark.createDataFrame(Seq(("zhangsan", 18, "nan"),("lisi",20,"nv"))).toDF("name", "age", "sex")val str = "name:name1"if(str == ""){ frame.show()}else{ val map: Map[String, String] = str.split(",").map(data =>
2020-07-02 15:24:04
378
原创 MR的Shuffle过程以及优化
mr的shuffle过程## 标题首先shuffle的过程指的是map方法之后以及reduce方法之前数据从map方法出来以后,首先进入getPartition方法,然后会对数据进行分区,之后进入环形缓冲区(默认大小为100Mb,数据量到达80%时会进行磁盘溢写),在溢写数据时会进行一次快排,这里的快排是对key的索引进行字典顺序排序,溢写之后会产生大量的小文件,(由于在hdfs中,每个文件不...
2020-04-03 18:26:57
552
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人