![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spark
冽夫
这个作者很懒,什么都没留下…
展开
-
IDEA打包
jar包在out文件夹里上传jar包到spark集群,submit提交。原创 2022-01-04 19:47:51 · 1004 阅读 · 0 评论 -
IDEA下修改spark源码报错
Scalastyle examines your Scala code and indicates potential problems with it. Place scalastyle_config.xml in the <root>/.idea or <root>/project directory.scalastyle官网上下载scalastyle_config.xml文件到spark代码根目录下,替换原来的xml文件,重启IDEA即可。...原创 2021-12-30 18:01:50 · 1492 阅读 · 0 评论 -
SPARK_DIST_CLASSPATH配置
请注意,Spark2.x是用Scala2.11预构建的,但2.4.2版本除外,它是用Scala2.12预构建的。Smark3.0+是用Scala2.12预构建的。spark-env.sh中配置:export SPARK_DIST_CLASSPATH=$(/opt/bigdata/hadoop-2.9.2/bin/hadoop classpath)有了SPARK_DIST_CLASSPATH配置信息以后,Spark就可以把数据存储到Hadoop分布式文件系统HDFS中,也可以从HDFS中读取数据。如果转载 2021-12-27 23:56:19 · 989 阅读 · 0 评论 -
java.lang.OutOfMemoryError: GC overhead limit exceeded
解决办法:由于我们在执行Spark任务是,读取所需要的原数据,数据量太大,导致在Worker上面分配的任务执行数据时所需要的内存不够,直接导致内存溢出了,所以我们有必要增加Worker上面的内存来满足程序运行需要。在Spark Streaming或者其他spark任务中,会遇到在Spark中常见的问题,典型如Executor Lost相关的问题(shuffle fetch失败,Task失败...转载 2021-09-10 11:09:45 · 354 阅读 · 0 评论 -
spark dataframe 中 drop 和 .na.drop 详解
问题描述:原始数据data总行数是1303638,使用data.drop()后数据总行数是1303638,使用data.na.drop()后数据总行数是0;为啥data.drop()没有丢弃null或nan的数据?总结:1)data.drop()如果不传递列名,不会做任何操作;2)通过以下比较发现,drop是用来丢弃列的,而na.drop是用来丢弃行的;3)通过以下比较发现,dataframe.drop是直接调用的dataset中drop接口;4)如果想要...转载 2021-03-08 11:09:49 · 3052 阅读 · 0 评论 -
如何更改Spark程序的HDFS复制因子?
将Spark程序的HDFS复制因子从3更改为1 val sparkConf = new SparkConf() sparkConf.set("spark.driver.maxResultSize", "10g")//.set("autoBroadcastJoinThresho1d","8388608000").set("spark.sql.broadcastTimeout","") val spark =SparkSession.builder().config(sparkCo原创 2020-11-23 18:06:52 · 224 阅读 · 0 评论 -
spark-大表和小表join-未完待续
https://cn.bing.com/search?q=spark+sql+%E5%A4%A7%E8%A1%A8%E5%92%8C%E5%B0%8F%E8%A1%A8join&qs=n&form=QBRE&sp=-1&pq=spark+sql+%E5%A4%A7%E8%A1%A8%E5%92%8C%E5%B0%8F%E8%A1%A8join&sc=0-19&sk=&cvid=2F2FD7C73D614449B45C6942AE30BB11http原创 2020-10-11 14:37:21 · 1171 阅读 · 0 评论 -
spark之Row
hkl曰:直接搞过来官方的API文档,看不懂英文没关系,看它的实例就可以了。http://spark.apache.org/docs/1.3.1/api/scala/index.html#org.apache.spark.sql.Row注意:import org.apache.spark.sql._ 要先导入这个包 。Represents one row of output from a relational operator. Allows both generic ...转载 2020-10-11 14:33:57 · 1342 阅读 · 0 评论 -
解决升级Spark2.0之后,DataFrame map操作报错
当我们在使用spark1.6的时候,当我们创建SQLContext读取一个文件之后,返回DataFrame类型的变量可以直接.map操作,不会报错。但是升级之后会包一个错误,如下: 报错:No implicits found for parameter evidence$6: Encoder[Unit] 主要的错误原因为: ******error: Unable to find encoder for type stored in a Dataset. Primitive转载 2020-10-11 14:29:42 · 350 阅读 · 0 评论 -
spark空指针错误可能的原因之一——df.rdd.toDF
这空值动不动就Null point error,是个巨大的坑,昨天调试了一天的程序发现,dataframe转rdd进行类似于filter一些的操作,最后count的时候就会报空指针的错误,但是df不转为rdd而是直接df.filter(func)的话,就可以不报错地完美运行。究其根本...待下回分解。关于spark/Scala的空值处理:https://www.cnblogs.com/wwxbi/p/6011422.htmlhttps://blog.csdn.net/u012798083/art原创 2020-10-11 14:28:16 · 1828 阅读 · 0 评论 -
java.lang.NullPointerException的可能原因及处理
https://www.cnblogs.com/StrayWolf/p/6035952.htmljava.lang.NullPointerException具体意思是空指针异常,最常见的问题就是没有初始化。 字符串等数据类型没有初始化 类实例(对象)有用具体的类初始化 没有判断是否为空https://www.php.cn/java-article-450636.html“java.lang.NullPointerException”主要是运行时才会发生,该异常属于Runti.转载 2020-10-11 14:10:28 · 67996 阅读 · 2 评论 -
RDD和Dataframe相互转换
参考:https://www.cnblogs.com/starwater/p/6841807.html在spark中,RDD、DataFrame、Dataset是最常用的数据类型,本博文给出笔者在使用的过程中体会到的区别和各自的优势共性:1、RDD、DataFrame、Dataset全都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利2、三者都有惰性机制,在进行创建、转换,如map方法时,不会立即执行,只有在遇到Action如foreach时,三者才会开始遍历运算,极端情.转载 2020-10-11 14:05:26 · 990 阅读 · 0 评论 -
scala中的time.parse
docs.oracle.com/javase/8/docs/api/java/text/DateFormat.html#parse-java.lang.String-简而言之就是把字符串的“日期”转为真正的日期。真正的日期会自带一些split的操作。https://blog.csdn.net/u012940753/article/details/51218466?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMac转载 2020-10-11 14:03:49 · 621 阅读 · 0 评论 -
spark sql 之 limit
limit执行的不是action操作。show/head一类的是action操作。Spark limit改进在执行一条SQL,类似sparkSession.sql(“select * from table where id=1 limit 10000000”)这种SQL时,发现速度很慢。后面只有一个partition在处理。limit的原理就是在先根据查询条件组成一个RDD,然后每个partition取limit数量,再统一发给一个partition,然后取出limit数量的Row.这个转载 2020-10-09 22:00:42 · 6269 阅读 · 4 评论 -
关于spark中的groupByKey、reduceByKey、foldByKey
避免使用GroupByKey我们看一下两种计算word counts 的方法,一个使用reduceByKey,另一个使用 groupByKey:val words = Array("one", "two", "two", "three", "three", "three") val wordPairsRDD = sc.parallelize(words).map(word => (word, 1)) val wordCountsWithReduce = wordPairsRDD转载 2020-10-09 21:56:45 · 1225 阅读 · 0 评论 -
小分区合并问题-Coalesce()方法和repartition方法
小分区合并问题介绍:在使用spark进行数据处理的过程中,常会使用filter方法对数据进行一些预处理,过滤掉一些不符合条件的数据。在使用该方法对数据进行频繁过滤或者是过滤掉的数据量过大的情况下就会造成大量小分区的生成。在spark内部会对每一个分区分配一个task来执行任务,如果task过多,那么每个task处理的数据量就会很小,造成线程频繁在task之间切换,使得资源开销较大,且很多任务等待执行,并行度不高,最终造成集群工作效益低下。为了解决这一个问题,常采用RDD中重分区的函数(coalesc转载 2020-10-08 19:44:43 · 676 阅读 · 0 评论 -
Spark DF:关于Row中的数值获取问题
//json文件//{"page_id":"87","pay_category_ids":"99","pay_product_ids":"96","city_id":5}//{"pay_category_ids":"74","city_id":0} val df = sparkSession.read.json("./src/data/test")df.show()df.rdd.foreach(row => { println("getAs: "+row.getAs[String].转载 2020-10-08 19:11:32 · 3414 阅读 · 0 评论 -
join连接
单个字段链接:df.join(df2,"user").show()输出为:+----+---+----+--------------------+---+|user| id|type| visittime|sex|+----+---+----+--------------------+---+| 1| 1| 助手1|2017-08-10 13:44:...| 男|| 1| 2|APP1|2017-08-04 13:44:...| 男|| 1| 1转载 2020-10-08 18:58:48 · 274 阅读 · 0 评论 -
distinct和dropDuplicates
distinct数据去重使用distinct:返回当前DataFrame中不重复的Row记录。该方法和接下来的dropDuplicates()方法不传入指定字段时的结果相同。dropDuplicates:根据指定字段去重跟distinct方法不同的是,此方法可以根据指定字段去重。例如我们想要去掉相同用户通过相同渠道下单的数据:df.dropDuplicates("user","type").show()输出:+---+----+----+--------------------+|转载 2020-10-08 17:55:19 · 1615 阅读 · 0 评论 -
groupBy和pivot
groupBy方法有两种调用方式,可以传入String类型的字段名,也可传入Column类型的对象。使用方法如下:df.groupBy("user")df.groupBy(df("user"))groupBy方法之后得到的是GroupedData类型对象,不能直接接show方法来展示DataFrame,还需要跟一些分组统计函数,常用的统计函数有:max(colNames: String)方法,获取分组中指定字段或者所有的数字类型字段的最大值,只能作用于数字型字段min(colNames:转载 2020-10-07 23:16:55 · 977 阅读 · 0 评论 -
orderBy和sort
orderBy和sort:按指定字段排序,默认为升序 ,例如,按照时间字段进行排序:df.orderBy("visittime").show(false)输出:+---+----+----+---------------------+|id |user|type|visittime |+---+----+----+---------------------+|12 |1 |助手2 |2017-07-07 13:45:08.0||10 |2 |助手1 |201转载 2020-10-07 23:12:02 · 1029 阅读 · 0 评论 -
limit:获取指定DataFrame的前n行记录并得到一个新的DataFrame对象
limit方法获取指定DataFrame的前n行记录,得到一个新的DataFrame对象。和take与head不同的是,limit方法不是Action操作。转载 2020-10-07 23:08:40 · 3225 阅读 · 0 评论 -
drop:去除指定字段,保留其他字段
返回一个新的DataFrame对象,其中不包含去除的字段,一次只能去除一个字段。转载 2020-10-07 23:07:10 · 684 阅读 · 0 评论 -
selectExpr:可以对指定字段进行特殊处理
可以直接对指定字段调用UDF函数,或者指定别名等。传入String类型参数,得到DataFrame对象。 比如,将type字段重新命名为visittype,同时截取visittime的date:df.selectExpr("user","type as visittype","to_date(visittime)").show()输出为:+----+---------+--------------------------------+|user|visittype|to_date(CAST转载 2020-10-07 23:06:44 · 1105 阅读 · 0 评论 -
Scala 隐式(implicit)详解
阅读目录目录阅读目录文章正文1、Spark 中的隐式思考2、Scala 隐式使用方式2.1隐式值2.2 隐式视图2.3 隐式类3、Scala 隐私注意事项3.1 转换时机3.2 解析机制3.3 转换前提文章参考文章正文通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码。1、Spark 中的隐式思考隐式转换是Sc...转载 2020-10-07 11:21:02 · 1142 阅读 · 0 评论 -
spark之Dataframe保存模式
以前spark.write时总要先把原来的删了,但其实是可以设置写入模式的。val df = spark.read.parquet(input)df.write.mode("overwrite").parquet(output)dataframe写入的模式一共有4种:overwrite 覆盖已经存在的文件 append 向存在的文件追加 ignore 如果文件已存在,则忽略保存操作 error / default 如果文件存在,则报错def mode(saveMode: Str.原创 2020-10-06 20:47:26 · 2179 阅读 · 0 评论 -
spark:Failed to create local dir
近日莫名遭遇异常一枚,如下:org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 271.0 failed 1 times, most recent failure: Lost task 0.0 in stage 271.0 (TID 544, localhost): java.io.IOException: Failed to create local dir in /tmp/blo...转载 2020-10-06 18:31:33 · 2624 阅读 · 0 评论 -
Spark监控篇
Spark监控官网地址一、每个Spark程序都有的4040端口Web 界面进行监控Every SparkContext launches a web UI, by default on port 4040, that displays useful information about the application. This includes:A list of scheduler s...转载 2020-03-30 20:25:09 · 1134 阅读 · 0 评论 -
linux下spark-shell中报错java.io.FileNotFoundException (Too many open files)
caused by:java.io.FileNotFoundException: /tmp/blockmgr-f66a6a16-0bf5-4549-8650-bcfc367eafbb/1d/temp_shuffle_634ae49b-6255-4298-a22a-21f6a96bc818 (Too many open files)该程序需要同时操作许多文件,所以会有报错提示too many o...原创 2020-02-21 22:51:41 · 1731 阅读 · 0 评论 -
Spark 的几种运行模式
1.测试或实验性质的本地运行模式(单机)该模式被称为Local[N]模式,是用单机的多个线程来模拟Spark分布式计算,通常用来验证开发出来的应用程序逻辑上有没有问题。其中N代表可以使用N个线程,每个线程拥有一个core。如果不指定N,则默认是1个线程(该线程有1个core)。 指令示例: 1)spark-shell --master local 效果是一样的 2)spark-s...转载 2019-12-19 21:23:12 · 682 阅读 · 0 评论 -
Spark读写HBase之使用Spark自带的API以及使用Bulk Load将大量数据导入HBase
1. 需要的jar包依赖<properties> <spark.version>2.3.0</spark.version> <hbase.version>1.2.6</hbase.version> <scala.main.version>2.11</scala....转载 2019-12-16 11:54:42 · 402 阅读 · 0 评论 -
在RDD.map操作中“修改外部声明的变量”是无效的
valheightMap=mutable.HashMap[Int,mutable.ArrayBuffer[Double]](1->3.5,2->4.8)valfilteredData=transactions.map{transaction=>valfiltered=transaction.flatMap(itemToRank.get)j...原创 2019-11-25 17:29:44 · 857 阅读 · 0 评论 -
spark_程序接收外部传入的参数
spark-submit --class "test" --master spark://master:7077 /--driver-cores 16 --executor-cores 16 --conf spark.driver.memory=30G /--conf spark.executor.memory=30G //root/xxx/test/target/scala-2....原创 2019-11-04 19:53:39 · 3161 阅读 · 0 评论 -
spark全分布式环境的搭建(在已实现hadoop[ssh]集群搭建的基础上)
目录1、准备好安装包到master上并配置环境变量2、对spark的配置文件进行配置2.1 spark-env.sh2.2 slaves3、用scp把配置好的spark文件夹传到slave1和slave2上4、启动hadoop和spark5、jps查看进程运行情况1、准备好安装包到master上并配置环境变量vim /etc/profile#J...原创 2019-11-04 11:14:05 · 256 阅读 · 0 评论 -
new SparkContext()不可以放在main函数外面
在写spark程序的时候,许多人会遇到以下这个报错,包括我自己也遇到过,当时郁闷了很久报错说在配置中必须设置一个master URL.但是我明明在提交应用的时候设置了–master呀,为什么说我没有,于是非常惊讶,怀疑是不是计算机自己疯掉了。其实这是初学者很容易犯的错误,原因在于没有真正理解spark分布式或伪分布式的运行原理。出错的小伙伴往往把创建spark实例,或者sc.textF...转载 2019-10-19 20:39:43 · 499 阅读 · 0 评论 -
spark dataframe中的for和if
尽可能地用map代替formap相较于for真的快很多if 和 for 真的太为难JVM了(运行效率非常低下)他只是个单纯的OO(卑微)????关于python中dataframe的 for 和 if ,有异曲同工之妙:https://blog.csdn.net/geniusle201/article/details/78351639#commentBox...原创 2019-10-15 22:03:53 · 1544 阅读 · 0 评论 -
linux下scala常用项目管理工具sbt的安装配置;下载到中途出现error:ClassNotFound的原因和解决办法
sbt的实质是从网上下载项目需要的jar包,所以在配置和使用时必须保证能ping域名,除非再次打包时example.sbt中没有添加新的ar包。1、sbt解压到指定路径,配置环境变量,source2、执行sbt package或sbt version,执行后会一直get ***,并在~目录下产生.sbt目录3、Ctrl+C退出geting4、cd ~5、cd .sbt6、...原创 2019-10-15 16:56:39 · 691 阅读 · 0 评论 -
spark dataframe多行合并为一行
将card相同的某几行以“,”为分割合并为一行。val df1=spark.sql("select card,concat_ws(',',collect_set(tl)) as tlTra from cardTl group by card")参考博主:https://blog.csdn.net/u013090676/article/details/80721764...原创 2019-10-12 19:52:37 · 4771 阅读 · 1 评论 -
IDEA写spark程序时import org.apache.spark.sql.{Row,SparkSession}错误
因为是IDEA第一次运行spark程序,所以需要导入相应的jar包jar包来源参考我的另一篇博文其实两篇博文描述的遇到的问题挺相似的下载好后点击文件→项目结构→模块→依赖(lib)也可以直接shift+Ctrl+Alt打开此界面点击右边的➕,选择 Jars或目录,选择下载好的Jar包,单击确定。大功告成~...原创 2019-05-09 12:32:42 · 7785 阅读 · 1 评论 -
No TypeTag available for String sqlContext.udf.register()
今天在用IDEA写spark sql时遇到这个从未见过的奇葩问题贴上代码package udf_sqlimport org.apache.spark.sql.{DataFrame, SparkSession}object sql_udf { def main(args: Array[String]): Unit = { val spark = SparkSession....原创 2019-05-09 15:50:02 · 472 阅读 · 0 评论