
Scala
楓尘林间
计算机爱好者
展开
-
Linux下修改jar包中的配置文件application.conf
Linux下修改jar包中的配置文件application.conf原创 2023-09-11 10:37:16 · 753 阅读 · 0 评论 -
spark读写hdfs
无原创 2022-10-27 10:20:16 · 321 阅读 · 0 评论 -
spark利用EsSparkSQL读写ES
spark读写ES原创 2022-10-26 18:28:25 · 541 阅读 · 0 评论 -
scala spark dataframe 时间加减
无原创 2022-10-25 18:19:04 · 1962 阅读 · 0 评论 -
scala Word2VecModel导入报错
import org.apache.spark.mllib.feature.{Word2Vec, Word2VecModel}import org.apache.spark.sql.{DataFrame, Row, SparkSession}model 保存:参考:http://spark.apache.org/docs/2.3.4/api/scala/index.html#org.apache.spark.mllib.feature.Word2VecModelvar model = Word2V原创 2021-09-26 16:17:00 · 262 阅读 · 0 评论 -
java scala获取项目当前路径 this.getClass.getResource()
println(this.getClass.getResource("./"))获取到当前代码文件所在目录println(this.getClass.getResource("/"))获取到当前项目 target/classes/路径下注: 该方法获取路径只能返回上层目录 两次返回上层则 返回nullprintln(this.getClass.getResource("./…/data"))返回正常上层路径println(this.getClass.getResource("./…/.原创 2021-09-26 11:12:25 · 1384 阅读 · 0 评论 -
scala 中的 break
scala 中的 break需要导入类import scala.util.control.Breaks.{break, breakable}breakable { for((account, prob)<-accountDistribution){ addProb += prob if(addProb>=randomDouble){ firstAccount = account break }}}否则 直接使用 break 会报错!!!...原创 2021-09-23 19:15:29 · 503 阅读 · 0 评论 -
scala python 用循环创建变量
scala参考用字典代替变量,想调用变量 用key来代替:val strMap = scala.collection.mutable.Map[String, Int]()for(j<-0 until 5) strMap+=(s"a${j}"->j*100)println(strMap("a1"))结果: 100python参考Python中的locals 方法createVar = locals()listTemp = range(1,10)for i,.原创 2021-08-25 17:16:27 · 142 阅读 · 0 评论 -
scala和java 获取当前文件所在的相对路径和绝对路径
原理上都是调用了java.io.File 包只不过由于scala语法与java语法有些差别javaimport java.io.FileFile directory = new File("");//设定为当前文件夹System.out.println(directory.getCanonicalPath());//获取标准的路径System.out.println(directory.getAbsolutePath());//获取绝对路径scalaimport java.io.原创 2021-05-10 11:44:13 · 2905 阅读 · 0 评论 -
scala 中的flatMap和map
网上很多分析flatMap和Map的不同,找几个还不错的,在加上自己的理解:参考1 https://www.jianshu.com/p/c64f278a9902map操作val lineArray = Array("hello you","hello me","hello world")val lines = sc.parallelize(lineArray, 1)val words = lines.map(line =>{ line.split(" ") })words.for原创 2021-04-19 20:29:42 · 953 阅读 · 0 评论 -
spark DataFrame使用collection()方法和groupBy()、isDefined
collect()把 dataframe格式转化为 Array[Row]格式以movieLens数据前7行位例userdata.show()部分数据展示:+------+-------+------+----------+|userId|movieId|rating| timestamp|+------+-------+------+----------+| 1| 2| 3.5|1112486027|| 1| 29| 3.5|111248467原创 2021-04-19 17:17:26 · 1461 阅读 · 0 评论 -
[转]SparkSQL中DataFrame的getAs和getString函数解析
JSON数据{"name":"Michael","age":10, "adress": "beijin"}{"name":"Andy", "age":30, "adress": "beijin"}{"name":"Justin", "age":19, "adress": "beijin"}getAs函数peopleDF.map(x => x.getAs[String]("adress")).show()//运行结果+------+| value|+------+|beijin|转载 2021-04-19 15:59:33 · 1394 阅读 · 0 评论 -
scala中的排序sortBy和map例子
API接口点击一直不会用sortBy,都是用sortWith,今天偶然看到一个sortBy的写法,觉得很高级,分享一下 var ll = List[(String, Int, Int)](("a",1, 400),("b",3, 600),("m",3, 100),("c",2, 40)) println(ll) var a = ll.map{case Tuple3(name:String, age:Int, salary:Int)=>(name,age, salary)原创 2021-04-16 18:02:39 · 1314 阅读 · 0 评论 -
spark dataframe的时间类型和String类型转化
https://www.cnblogs.com/mylittlecabin/p/11692363.htmlhttps://stackoverflow.com/questions/40763796/convert-date-from-string-to-date-format-in-dataframeshttps://www.nuomiphp.com/eplan/29850.html原创 2021-01-07 18:22:26 · 20616 阅读 · 1 评论 -
Caused by: java.sql.SQLException: ORA-01861: literal does not match format string
利用Spark 链接oracle数据库 通过sq提取数据操作时,报错:Caused by: java.sql.SQLException: ORA-01861: literal does not match format string字面意思是格式不匹配查了一下使用的sql语句:select b.* , to_char(to_date(b.START_TIME, 'yyyy-mm-dd HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS') as START_TIME_TMP原创 2020-12-28 17:11:09 · 1462 阅读 · 0 评论 -
Spark和Java的日期格式
SimpleDateFormat 类如果使用 DateFormat 类格式化日期/时间并不能满足要求,那么就需要使用 DateFormat 类的子类——SimpleDateFormat。SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类,它允许进行格式化(日期→文本)、解析(文本→日期)和规范化。SimpleDateFormat 使得可以选择任何用户定义的日期/时间格式的模式。SimpleDateFormat 类主要有如下 3 种构造方法。SimpleDateF原创 2020-12-22 14:25:41 · 328 阅读 · 0 评论 -
spark shell 提交作业 直接报错 java.lang.NullPointerException
利用spark-shell提交任务时,利用args传入参数,结果报错:java.lang.NullPointerException且stdout和stderr都没有报错日志:引起原因:传入参数有空值(null)原创 2020-11-16 17:28:05 · 680 阅读 · 0 评论 -
Scala获取当前时间
import java.text.SimpleDateFormatimport java.util.Date def NowDate(): String = { val now: Date = new Date() val dateFormat: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") val date = dateFormat.format(now) return date }原创 2020-10-26 15:57:48 · 2233 阅读 · 0 评论 -
spark sql 查询hive表是否存在
利用 show tables in DBname like ‘TABLEname’ 语句var userid = "test"var datasetid1 = "dm_op_log"var datasetid2 = "bb"var s = spark.sql(s"show tables in $userid like '$datasetid1' ")s.show()println("@@@@", s.count())var s2 = spark.sql(s"show tables.原创 2020-10-22 17:46:36 · 3803 阅读 · 0 评论 -
Spark机器学习中的常用算法特征重要性筛选FeatureScore
1 logisticRegression2 randomforest3 xgboosthttps://stackoverflow.com/questions/62769574/spark-xgboost4j-how-to-get-feature-importancehttps://cloud.tencent.com/developer/ask/216071原创 2020-08-06 19:06:20 · 2883 阅读 · 0 评论 -
Spark对两个列数不一致DataFrame进行上下拼接
之前已经在博客中介绍了spark的dataframe利用union 等一系列方法进行拼接,详情请见Spark中对Dataframe的union 、unionAll和 unionByName方法说明但是在那篇博客也提到,利用union的这些方法,必须保证两个dataframe必须列数一致(unionByName方法还需要所有列名必须一致)。那么如果如果dfA和dfB的列长度不一致,应该怎么去上下拼接呢?val data2 = Seq( | ("1", null, "hlj", null),原创 2020-08-04 10:24:49 · 3277 阅读 · 0 评论 -
[转]Spark如何设置不打印INFO日志
方法1:在配置文件中修改cd $SPARK_HOME/conf ## 查看是否存在 log4j.properties## 如果没有,则cp log4j.properties.template log4j.propertiesvi log4j.properties##然后,修改下面的这一个行:log4j.rootCategory=INFO, console##改成:log4j.rootCategory=WARN, console或者(按个人需求)log4j.rootCateg转载 2020-07-23 10:30:15 · 6718 阅读 · 1 评论 -
spark2.x读取csv文件乱码问题
由于spark读取csv时,默认编码格式是utf-8,如果csv文件的格式是其他,需要加上编码格式的设定例:如果csv格式为GBKimport org.apache.spark.sql.SparkSessionval spark = SparkSession.builder().appName(“demo”).getOrCreate();如果用默认格式utf-8读取:var data = spark.read.option("header", false).option("delimiter",原创 2020-07-16 17:26:05 · 2787 阅读 · 0 评论 -
不用IDEA读取parquent文件的两种方式
1.命令行输入spark-shell2. 创建sparkSessionimport org.apache.spark.sql.SparkSessionval spark = SparkSession.builder().appName(“demo”).getOrCreate();3. 读取parquent数据var sessi = spark.read.load("/aaa/bbb/output_pt");sessi.show(5);其中output是一个文件夹,里面有多个pa原创 2020-07-13 16:30:45 · 661 阅读 · 0 评论 -
scala将UTC时间格式化
import java.text.SimpleDateFormat def transformDateUTC(str1:String)={ var str3 = str1 val format1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") val format2 = new SimpleDateFormat("yyyyMMddHHmmss") var date = format1.parse(str3.原创 2020-07-10 17:45:43 · 495 阅读 · 0 评论 -
由 cannot resolve ‘`a.stuID`‘ given input columns: [a.stuID, a.zhuanID, b.stuID, b.zhuanID]错误引发的思考
利用sparksql对两张表进行join,报错:检查表中字段:发现两张表内都存在stuID。折腾了好久也没弄好,后来不甘心,将数据转为txt格式,没想到同样的代码***跑通了***。这可太amazing了,打开两个文档反复对比了一下。并没有什么不同,直到身边的大神让我查看一下文件的编码才发现端倪:## 预览文件head -n 1 xxx.txt | od -clinux 下的od命令可以查看 这篇博客结果显示:发现csv文件的第一行第一列开头比txt多了三个字符,原因就在这:再次原创 2020-07-08 19:20:20 · 9770 阅读 · 1 评论 -
Scala保留字符串中的大小写字母和数字
import scala.util.matching.Regexvar s = "23423523sar#$%79HSAFA!#*qwer"val pattern = """[0-9A-Za-z]""".rprintln((pattern findAllIn s).mkString(",")) 逗号连接,生成String// println((pattern findAllIn s toList) 变为list// println((pattern findFirstIn s toLis原创 2020-06-12 17:53:54 · 1119 阅读 · 0 评论 -
Scala中Char类型与Int类型互相转化
Char类型与Int类型互相转化toChar和toInt方法def funCharToInt(ch: Char) = { ch + 0 // 或者 // ch.toInt }def funIntToChar(x:Int) = { x.toChar}funIntToChar(funCharToInt('郭'))拓展1: 字符串脱敏var q = "网名"def hypose(q:String)={ var s = "" for (i &原创 2020-06-11 11:11:56 · 1284 阅读 · 0 评论 -
Spark中读取/写入mysql数据库
mysqlvar row_data = spark.read.jdbc(url, table, predicates, prop)函数:jdbcdef jdbc(url : scala.Predef.String, table : scala.Predef.String, predicates : scala.Arr原创 2020-06-10 11:42:10 · 2142 阅读 · 1 评论 -
Spark dataframe某一列转化为Array
首先,必须保证列没有空值,如果有,则需要drop$colName 为 列名data = data.na.drop(s"$colName")输出格式为ArrayAnydata0.select(s"$cname").collect().map(_(0))变为String或Double需要定义函数 // 类型转换为String def ToString(s:Any):Strin...原创 2020-04-19 18:07:56 · 8423 阅读 · 2 评论 -
Scala的ArrayBuffer
1. ArrayBuffer添加单数值 如:ArrayBuffer(String)var feature_val = ArrayBuffer[(String)]()feature_val+="3"2.ArrayBuffer添加多数值 如:ArrayBuffer(String, String)var feature_val = ArrayBuffer[(String, Stri...原创 2020-04-16 22:18:00 · 402 阅读 · 0 评论 -
Spark DataFrame转化为RDD[Vector],应用于KMeans聚类,monotonically_increasing_id()方法进行结果合并
将DataFrame转化为RDD[Vector],应用于KMeans聚类模型训练import org.apache.spark.mllib.linalg.Vectorsimport org.apache.spark.rdd.RDD import org.apache.spark.mllib.clustering.{KMeans, KMeansModel}import org.apac...原创 2020-03-30 18:50:49 · 2142 阅读 · 3 评论 -
Scala语法向上取整和向下取整
// 向下取整scala.math.floor(7.5)结果:Double = 7.0// 向上取整scala.math.floor(7.5)结果:Double = 8.0// 四舍五入scala.math.round(7.5)结果:Long = 8round 将long和double转化为long型将float转化为int型def round(x : scala....原创 2020-03-30 14:09:56 · 9255 阅读 · 2 评论 -
Spark scala中将Array(Row)转化为DataFrame(另一种抽样方式)
1.spark DataFrame常规的采样方式——sample()由于scala中 对DataFrame 方式为 sample() 方法sample : 采样采样变换根据给定的随机种子,从RDD中随机地按指定比例选一部分记录,创建新的RDD。采样变换 在机器学习中可用于进行交叉验证。语法def sample(withReplacement: Boolean, fraction: Do...原创 2020-03-20 14:10:03 · 8088 阅读 · 0 评论 -
Spark Dataframe 按某一行排序新加一列index
1.Dataframe按某一行排序新加一列index (index不重复)import spark.implicits._import spark.implicits._var data2 = Seq( ("0", "2002", "196", "1", "bai"), ("1", "4004", "192", "2", "wang"), ("0", "7007", "95...原创 2020-03-19 20:44:21 · 1928 阅读 · 0 评论 -
Spark DataFrame统计某列特征不同个数
Scala版本import spark.implicits._var data1 = Seq( ("0", "2002", "196", "1", "bai"), ("1", "4004", "192", "2", "wang"), ("0", "7007", "95", "3", "wang"), ("0", "4004", "4", "4", "wang"), ("0...原创 2020-03-19 17:18:58 · 10268 阅读 · 0 评论 -
SparkDataFrame求某一列的最大值和最小值和求和
1.利用Scala沟边import spark.implicits._var data1 = Seq( ("0", "2002", "196", "1", "bai"), ("1", "4004", "192", "2", "wang"), ("0", "7007", "95", "3", "wang"), ("0", "4004", "4", "4", "wang")...原创 2020-03-18 13:44:38 · 13927 阅读 · 0 评论 -
Scala Array数组和ArrayBuffer可变数组的相互转化
Array 转 ArrayBuffer将Array转换成已经声明的类型为ArrayBuffer的成员变量,需要使用asInstanceOf进行强制转换val array = Array[String]("a", "b", "c")println(s"array=$array")val arrayToBuffer = array.toBuffer.asInstanceOf[ArrayBuff...转载 2020-03-16 14:54:59 · 3630 阅读 · 0 评论 -
Spark DataFrame选择其中一列或几列
DataFrame使用抽取一列或几列import spark.implicits._var data1 = Seq( ("0", "ming", "tj","2019-09-06 17:15:15", "2002", "192.196", "win7", "bai"), ("1", "ming", "tj","2019-09-07 16:15:15", "4004", "192.19...原创 2020-03-16 14:38:49 · 15616 阅读 · 1 评论 -
Scala判断类型是否为数值型
基本类型:类型Byte Short Int Long和Char被称为整数类型(integral type),整数类型加上Float和Double被称为数类型(numeric type) NumericType。官方API说明文档:http://spark.apache.org/docs/1.4.0/api/java/org/apache/spark/sql/types/NumericType....原创 2020-03-16 11:25:08 · 4724 阅读 · 0 评论