大数据
spark,scala学习
别说话写代码
这个作者很懒,什么都没留下…
展开
-
高质量Hive的常见用法
查询sql进行不使用select *,而是select具体字段,节省资源,减少网络开销,*查询时,很可能就不会使用到覆盖索引,就会造成回表查询 如果知道查询结果只有一条,或者只要最大/最小一条数据,建议用limit 1 尽量避免在where子句中用or连接,可以换成两个查询用union all连接,使用or可能导致索引失效 优化like语句,like '%123'和like '123%'有区别,把%放前面不走索引,放后面会走索引 使用where条件限定要查询的数据..原创 2021-10-29 11:50:56 · 994 阅读 · 0 评论 -
presto与hive字符串常用操作(字符串截取、字符串拼接、字符串分割)
1、字符串截取substrpresto:substr(string, start, length) → varchar 如: select substr('1599319787151',1,10)功效:返回字符串A从下标start位置开始,长度为len的字符串substr(string, start) → varchar 如: select substr('1599319787151',1)功效:返回字符串A从下标start位置到结尾的字符串ps:对String来说,...原创 2021-07-24 15:07:18 · 11091 阅读 · 1 评论 -
Hive常用优化方法
1.常用MapReduce作业配置参数可在客户端的mapred-site.xml中配置,作为MapReduce作业的缺省配置参数。也可以在作业提交时,个性化指定这些参数。 参数名称 缺省值 说明 mapreduce.job.name 作业名称 mapreduce.job.priority NORMAL 作业优先级 ..原创 2021-04-26 10:26:51 · 586 阅读 · 0 评论 -
org.apache.spark.shuffle.FetchFailedException: Java heap space
原因:程序运行时所需内存 >memory。一般是因为处理数据量或者缓存的数据量较大,已有内存不足 并且内存分配速度 > GC回收速度导致。解决方案:增大memory、减少单个Executor的并发数(cores)、减少不必要的cache操作、尽量不要对比较大的数据做broadcast、尽量避免shuffle算子或者对程序逻辑/底层数据进行优化...原创 2021-04-14 14:37:17 · 1298 阅读 · 0 评论 -
java.lang.OutOfMemoryError: Java heap space
原因:程序运行时所需内存 >memory。一般是因为处理数据量或者缓存的数据量较大,已有内存不足 并且内存分配速度 > GC回收速度导致。解决方案:增大memory、减少单个Executor的并发数(cores)、减少不必要的cache操作、尽量不要对比较大的数据做broadcast、尽量避免shuffle算子或者对程序逻辑/底层数据进行优化...原创 2021-04-14 14:36:20 · 767 阅读 · 0 评论 -
YarnAllocator:Container killed by YARN for exceeding memory limits. spark.yarn.executor.memoryOverhe
原因:运行时memoryOverhead+memory >MonitorMemory解决方法:通过-–confspark.sql.shuffle.partitions=XXX增大partitions个数;或增大executor.memory的大小,不超过(Max)MonitorMemory即可。若已经到max仍然报错,可以减少单个Executor的并发数(cores),增大Executor数量。...原创 2021-04-14 14:34:06 · 364 阅读 · 0 评论 -
presto常用sql函数(字符串操作、数学函数、日期操作、正则表达式、json、聚合函数、位运算)
字符串函数concat(string1,…,stringN)连接给定的字符串 length(string) 返回给定字符串的长度 lower(string) 返回字符串的小写格式 upper(string) 返回给定字符串的大写格式 lpad(string,size,padstring) 给定字符串的左填充 rpad(string,size,padstring) 给定字符串的右填充 ltrim(string) 从字符串中删除字符左侧空格 rtrim(string) 从字符串中删除字符右侧空原创 2021-04-13 15:10:54 · 10137 阅读 · 0 评论 -
presto时间转换、时间加减、时间差
Hive中对应的日期操作见:https://blog.csdn.net/qq_21997625/article/details/111473520问题1:时间格式转换例子: 当前时间20200110 转化为2020-01-10--prestoselect (format_datetime(date_parse('20200110','%Y%m%d'),'yyyy-MM-dd')问题2: 时间的加减例子: 原时间为20200110 需先转化为标准日期形式再加减--presto.原创 2021-04-13 14:20:28 · 19248 阅读 · 1 评论 -
presto获取上月第一天和最后一天、当月第一天
SELECT concat(SUBSTR(sysdate(0), 1, 7), '-01'), --本月第一天 date_add('day', - 1, CAST(concat(SUBSTR(sysdate(0), 1, 7), '-01') AS DATE)), --上月最后一天 concat(SUBSTR(cast(date_add('day', - 1, CAST(concat(SUBSTR(sysdate(0), 1, 7), '-01') AS DATE)) as varchar.原创 2021-04-13 14:16:09 · 8461 阅读 · 2 评论 -
hive解析json get_json_object
1,对于jsonArray(json数组),如person表的xjson字段有数据:[{"name":"王二狗","sex":"男","age":"25"},{"name":"李狗嗨","sex":"男","age":"47"}]取出第一个json对象,那么hive sql为:SELECT get_json_object(xjson,"$.[0]") FROM person;结果是: {"name":"王二狗","sex":"男","age":"25"}取出第一个json原创 2021-04-12 17:03:17 · 1888 阅读 · 0 评论 -
hive读取jsonarray
下面语句直接可以识别hive中的json array类型get_json_object(orientation, "$.[0].wlRatio")下面语句可以将jsonarray一行转换为多行,然后进行处理或者遍历SELECT id, pcFROM app.table_name LATERAL VIEW explode(split(regexp_replace(regexp_replace(regexp_replace(orientation, '\\[', ''), '\\]'..原创 2021-04-12 16:56:44 · 2759 阅读 · 0 评论 -
spark dataframe过滤查询filter
filter过滤条件直接写sql的条件就行ordDF.filter("pin_ct <= 5 AND ratio > 0.6 AND adowner_ct <= 5").orderBy(desc("ratio"))原创 2021-03-17 16:09:28 · 3599 阅读 · 0 评论 -
spark dataframe降序排序
package com.dkl.leanring.spark.dfimport org.apache.spark.sql.SparkSessionobject DfSortDesc { def main(args: Array[String]): Unit = { val spark = SparkSession.builder().appName("DfSortDesc").master("local").getOrCreate() val data = Array((7,.转载 2021-03-17 16:06:51 · 2417 阅读 · 0 评论 -
Hive获取上月第一天和最后一天
SELECT concat(SUBSTR(DATE_SUB(FROM_UNIXTIME(UNIX_TIMESTAMP()),DAY(FROM_UNIXTIME(UNIX_TIMESTAMP()))),1,7) ,'-01'), DATE_SUB(FROM_UNIXTIME(UNIX_TIMESTAMP()),DAY(FROM_UNIXTIME(UNIX_TIMESTAMP())))原创 2021-03-10 14:32:16 · 6079 阅读 · 0 评论 -
java.lang.StackOverflowError
使用maven打包项目的时候,报了错误:[ERROR] error: java.lang.StackOverflowError[INFO] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5365)[INFO] at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:5472)[INFO] at scala.tools.nsc原创 2021-02-04 10:42:44 · 874 阅读 · 3 评论 -
hive与presto时间转换对比
文章转自:https://zhuanlan.zhihu.com/p/164645100问题1:时间格式转换例子: 当前时间20200110 转化为2020-01-10--输出 2020-01-10--hiveselect to_date(from_unixtime(UNIX_TIMESTAMP('20200110','yyyyMMdd')));--prestoselect (format_datetime(date_parse('20200110','%Y%m%d'),'yyyy-M转载 2020-12-21 14:00:06 · 2306 阅读 · 0 评论 -
spark submit参数详解
spark-submit 详细参数说明参数名 参数说明 --master master 的地址,提交任务到哪里执行,例如 spark://host:port, yarn, local --deploy-mode 在本地 (client) 启动 driver 或在 cluster 上启动,默认是 client --class 应用程序的主类,仅针对 java 或 scala 应用 --name 应用程序的名称 --jars 用逗号...原创 2020-11-18 14:05:32 · 941 阅读 · 0 评论 -
Scala查看变量类型
使用.getClass.getSimpleName查看println(1.getClass.getSimpleName)原创 2020-11-16 13:47:40 · 3920 阅读 · 0 评论 -
scala退出spark命令行命令
:quit原创 2020-10-21 08:53:43 · 1928 阅读 · 1 评论 -
Scala日期操作、获取当前时间、获取前一天时间、获取两日期时间差、获取两日期间所有日期
获取当前时间var dateFormat: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd")var cal: Calendar = Calendar.getInstance()val nowday = dateFormat.format(cal.getTime())println(nowday)获取前1天日期val date = "2020-09-13"val myformat = new SimpleDateFormat("原创 2020-10-19 14:47:09 · 7522 阅读 · 0 评论 -
org.apache.spark.SparkException: Failed to execute user defined function($anonfun$11: (vector) => ve
在spark执行时出现rg.apache.spark.SparkException: Failed to execute user defined function($anonfun$11: (vector) => vector)可能是因为在使用VectorAssemlber合并特征时,如果具有矢量和原始特征,则无法合并它们。然后检查特征中的Indexer (StringIndexer or VectorIndexer),要保证训练集和验证级的都可用。详情可参考https://s..原创 2020-10-14 09:29:43 · 2534 阅读 · 0 评论 -
scala打印HashMap
scala中使用Java的HashMap,如果要打印HashMap时,要加上一句话,就可以遍历HashMap了import scala.collection.JavaConversions._val cMap= new util.HashMap[Long,Array[Double]]()cidMap.foreach{ s=> println(s._1,s._2.foreach(println)) }...原创 2020-10-14 09:24:24 · 1113 阅读 · 0 评论 -
spark dataframe出现NaN的情况
一般如果计算时,分母为0会出现NaN另一种计算时如果有元素为NaN,那么计算结果也是NaN原创 2020-10-14 09:14:36 · 1284 阅读 · 1 评论 -
XGBoost$.ml$dmlc$xgboost4j$scala$spark$XGBoost$$postTrackerReturnProcessing(XGBoost.scala:406)
报错信息: ERROR ApplicationMaster: User class threw exception: ml.dmlc.xgboost4j.java.XGBoostError: XGBoostModel training failedml.dmlc.xgboost4j.java.XGBoostError: XGBoostModel training failed at ml.dmlc.xgboost4j.scala.spark.XGBoost$.ml$dmlc$xgboost4j$.原创 2020-09-29 15:08:51 · 883 阅读 · 0 评论 -
Presto位运算/与或非
Presto 提供了如下几种位运算函数: 函数 语法 说明 bit_count bit_count(x, bits) → bigint 返回 x 的补码中置 1 的位数 bitwise_and bitwise_and(x, y) → bigint 位与函数 bitwise_not bitwise_not(x) → bigint 取非操作 bitwise_or bitwise_or(x, y) → bigint 位或函数 .原创 2020-09-23 17:14:54 · 2706 阅读 · 0 评论 -
Caused by: java.lang.OutOfMemoryError: Java heap space
遇到这种错误,百度各种方法设置堆栈大小无效,在pom里面加入就好了<jvmArgs> <jvmArg>-Xmx512m</jvmArg></jvmArgs>原创 2020-08-26 13:55:30 · 658 阅读 · 1 评论 -
Effictive Scala
内容来自:http://twitter.github.io/effectivescala/index-cn.htmlTable of Contents序言 格式化:空格,命名,Imports,花括号,模式匹配,注释 类型和泛型:返回类型注解(annotation),变型,类型别名,隐式转换 集合:层级,集合的使用,风格,性能,Java集合 并发:Future,集合 控制结构:递归,返回(Return),for循环和for推导,要求require和断...原创 2020-08-17 16:24:38 · 348 阅读 · 0 评论 -
Java集合List,Set,Map详解
转自:https://blog.csdn.net/zhangqunshuai/article/details/80660974概述:List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口 Set下有HashSet,LinkedHashSet,TreeSet List下有ArrayList,Vector,LinkedList Map下有Hashtable,LinkedHashMap,HashMap,TreeMap Collection接口下还有个Queu转载 2020-08-17 16:19:00 · 181 阅读 · 0 评论 -
Java集合List用法总结
转自:https://www.jianshu.com/p/25aa92f8d681Java集合作为一个Developer,Java集合类是我们在工作中运用最多的、最频繁的类。相比于数组(Array)来说,集合类的长度可变,更加适合于现代开发需求;Java集合就像一个容器,可以存储任何类型的数据,也可以结合泛型来存储具体的类型对象。在程序运行时,Java集合可以动态的进行扩展,随着元素的增加而扩大。在Java中,集合类通常存在于java.util包中。Java集合主要由2大体系构成,分别是Co转载 2020-08-17 16:04:08 · 3348 阅读 · 1 评论 -
Java ArrayList用法
转自:https://www.cnblogs.com/msymm/p/9872818.html1 ArrayList介绍ArrayList简介ArrayList 是一个数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。ArrayList继承了AbstractList,实现了List。它是一个数组队列,提供了相关的添加...转载 2020-08-17 15:51:14 · 336 阅读 · 0 评论 -
Java集合Map用法总结
文章转自:https://blog.csdn.net/qq_29373285/article/details/81487594接口概述我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。 Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。 Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。 Coll.转载 2020-08-17 15:43:11 · 388 阅读 · 0 评论 -
Java集合Set用法总结
本文转自:https://www.jianshu.com/p/b48c47a42916Set继承于Collection接口,是一个不允许出现重复元素,并且无序的集合,主要有HashSet和TreeSet两大实现类。在判断重复元素的时候,Set集合会调用hashCode()和equal()方法来实现。HashSet是哈希表结构,主要利用HashMap的key来存储元素,计算插入元素的hashCode来获取元素在集合中的位置; TreeSet是红黑树结构,每一个元素都是树中的一个节点,插入的元素都会进转载 2020-08-17 15:36:20 · 5754 阅读 · 0 评论 -
Hive Sql中均值、方差、标准差、皮尔逊相关系数、偏度、峰度统计字段
SELECT mean(age) AS '均值', variance(age) AS '方差', stddev(age) AS '标准差', corr(age,yearsmarried) AS '两个指标的相关系数', skewness(age) AS 'skewness偏度', kurtosis(age) AS 'kurtosis峰度'FROM table原创 2020-08-14 10:46:27 · 25074 阅读 · 1 评论 -
Hive查询中JOIN用法大全及图解
下面两张图分别出自:https://www.jianshu.com/p/aac4a15a50c9https://blog.csdn.net/leying521/article/details/93197951原创 2020-08-14 10:36:54 · 623 阅读 · 0 评论 -
scala错误ambiguous reference to overloaded definition
val jsonString = JSON.toJSONString(mapParam)会报错ambiguous reference to overloaded definition, 直接改成val jsonString = JSON.toJSON(mapParam).toString就好了原创 2020-08-07 17:27:12 · 2344 阅读 · 0 评论 -
Spark中DataFrame基本操作函数
Action 操作1、collect() ,返回值是一个数组,返回dataframe集合所有的行2、collectAsList() 返回值是一个java类型的数组,返回dataframe集合所有的行3、count() 返回一个number类型的,返回dataframe集合的行数4、describe(cols: String*) 返回一个通过数学计算的类表值(count, mean, stddev, min, and max),这个可以传多个参数,中间用逗号分隔,如果有字段为空,那么不参与运算...原创 2020-07-30 15:48:40 · 1398 阅读 · 0 评论 -
Scala-Spark-DataFrame转为RDD
val df = Seq(("table1",432), ("table2",567), ("table3",987), ("table1",789)). toDF("tablename", "Code").toDF() df.show() +---------+----+|tablename|Code|+---------+----+| table1| 432|| table2| 567|| table3| 987.转载 2020-07-29 09:31:54 · 2060 阅读 · 0 评论