spark 小技巧
来源:互联网 发布:珂润水乳怎么样知乎 编辑:程序博客网 时间:2024/06/13 02:53
一、把结果带出foreach
val e= b.map(f⇒{ var dbConnector:GraphDatabaseConnector=new Neo4jConnector(); val eachList=dbConnector.getPersonSimList(f._1) dbConnector.finalize() dbConnector=null //直接返回就ok eachList })
二、scala中如果直接return,返回的是整个方法的返回值,而不是方法里的某个lambda表达式的返回值,所以不用写return,直接最后将结果单独作为一行返回就行
同时,如果要返回多个值的话,直接
//方法的头部是这样的:(Long,Long)= //返回值这样return (a,b)
三、没事不要多加括号
val points2 = Array(Array((9.0,3.9,4.7)), Array(( 7.0,2.0,2.9)), Array(( 5.6,5.0,6.9)), Array((6.3,2.0,9.9)))val points2: Array[Array[(Double, Double, Double)]]val points2 = Array(Array(9.0,3.9,4.7), Array(7.0,2.0,2.9), Array(5.6,5.0,6.9), Array(6.3,2.0,9.9))val points2: Array[Array[Double]]
四、要将partition里的数据合并成一个
val rdd1MapParRDD = rdd1.mapPartitions(f ⇒ { var buf1 = scala.collection.mutable.ArrayBuffer.empty[Float] // var resultMap = Map[String,Array[Float]]() // var result = List[Array[Float]]() var result = scala.collection.mutable.ArrayBuffer.empty[Array[Float]] // f.map(f⇒{ while (f.hasNext) { buf1.appendAll(f.next()._2) } // }) val arr = buf1.toArray // arr.iterator // result.::(arr).iterator result.+=(arr).iterator // arr.toIterator })
五、当查看lib的路径感觉有问题时,可以打印运行时的路径,然后把lib放在对应路径下
String classpathString=System.getProperty("java.class.path");System.out.println("classpathString:"+classpathString);
六、使用log
@transient val logger:Logger=new ConsoleLogger()
log需要实现Serializable接口,但是在spark中没用,必须要加上@transient,同时,如果使用mapPartition这类的,由于log没有被分发,所以在work节点上是没有log这个类的,需要在mapPartition中new 一个log
阅读全文
0 0
- spark 小技巧
- spark小技巧-mapPartitions
- spark中的SparkContext实例的textFile使用的小技巧
- spark中的SparkContext实例的textFile使用的小技巧
- spark中的SparkContext实例的textFile使用的小技巧
- spark用程序提交任务到yarn Spark自定义分区(Partitioner) textfile使用小技巧 createDirectStream
- spark streaming 调试技巧
- spark partitioner使用技巧
- Spark编程技巧
- spark partitioner使用技巧
- 小技巧
- 小技巧
- 小技巧
- 小技巧
- 小技巧
- 小技巧
- 小技巧
- 小技巧
- selenium 截屏,生成图片
- Linux中编译文件时提示:arm-elf-gcc: leds.o : No such file or directory 错误的解决办法
- Java进程&线程(整理)
- 单线程socket通信
- JDK的安装
- spark 小技巧
- java并发编程实践 part 01 --> 线程创建方式
- 编程题收集
- Eclipse搭建及配置Maven,通俗易懂
- 对异常检测技术的简要概述(干货)
- Python日志处理之logging模块
- Can you answer these queries? 区间更新和查询
- nand flash 的oob 及坏块管理
- ajaxfileupload.js上传文件后总是调用error函数