zoukankan      html  css  js  c++  java
  • 工作随笔-20171012

    scala在idea中本地运行遇到问题:

    17/10/12 17:09:43 INFO storage.DiskBlockManager: Created local directory at /private/var/folders/bv/0tp4dw1n5tl9cxpc6dg2jy180000gp/T/blockmgr-0b0bf3cf-dd77-4bb4-97dc-60d6a65a35ae
    Exception in thread "main" java.lang.ExceptionInInitializerError
         at org.apache.spark.storage.DiskBlockManager.addShutdownHook(DiskBlockManager.scala:147)
         at org.apache.spark.storage.DiskBlockManager.<init>(DiskBlockManager.scala:54)
         at org.apache.spark.storage.BlockManager.<init>(BlockManager.scala:78)
         at org.apache.spark.SparkEnv$.create(SparkEnv.scala:365)
         at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:193)
         at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:288)
         at org.apache.spark.SparkContext.<init>(SparkContext.scala:457)
         at com.didichuxing.scala.BenchMarkMain$.main(BenchMarkMain.scala:21)
         at com.didichuxing.scala.BenchMarkMain.main(BenchMarkMain.scala)
    Caused by: java.lang.NoSuchFieldException: SHUTDOWN_HOOK_PRIORITY
         at java.lang.Class.getField(Class.java:1695)
         at org.apache.spark.util.SparkShutdownHookManager.install(ShutdownHookManager.scala:223)
         at org.apache.spark.util.ShutdownHookManager$.shutdownHooks$lzycompute(ShutdownHookManager.scala:50)
         at org.apache.spark.util.ShutdownHookManager$.shutdownHooks(ShutdownHookManager.scala:48)
         at org.apache.spark.util.ShutdownHookManager$.addShutdownHook(ShutdownHookManager.scala:191)
         at org.apache.spark.util.ShutdownHookManager$.<init>(ShutdownHookManager.scala:58)
         at org.apache.spark.util.ShutdownHookManager$.<clinit>(ShutdownHookManager.scala)
         ... 9 more
    

    查看这个帖子:
    https://forums.databricks.com/questions/2227/shutdown-hook-priority-javalangnosuchfieldexceptio.html

    貌似说的是运行在老版本的spark上

    我的本地并没有安装spark,是否是这个原因?

    看了这个帖子,感觉确实是这个问题。需要指定跑的spark,可以是远端的,也可以是local的。

    export SPARK_SUBMIT_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=7777

    但是我本地和开发机器上没有spark,所以就不能本地调试了,需要在服务上使用spark-shell进行手动调试。

    =================================

    最快的进行调试和开发spark的方法是什么?

    现在线上有一个spark集群,只能通过线上机器上的spark客户端进行连接,最快的方法应该是在spark客户端机器上进行开发,然后mvn打包,然后使用spark-submit,在local下面,这个应该是最快的方法了。

    根据文章:http://blog.csdn.net/lovehuangjiaju/article/details/49227919

    要想搭建spark远程调试方法,需要先把jar包提交到spark客户端机器,然后使用submit开启一个端口,然后idea上连接远端,这个也是很麻烦的。

    可能最方便的方法就是在客户端机器上开发了。可惜这样的话idea就有点鸡肋了。

    这篇文章:http://www.eurekao.com/post/build-spark-environment-for-windows-base-on-docker.html

    貌似可以本地搭建一个docker,然后在本地通过setJars的方法来进行直接调试。

    这个以后再尝试。。。TODO

    ====================

    如何通过rdd来进行合并?

    使用到了rdd的union算子。不过今天遇到的问题是需要一个初始化的rdd。所以就使用到emptyRDD,但是这个是个范型的类型,需要初始化的时候定义下范型。

    var rdd = sc.emptyRDD[FlowInfo]

    ========================

    mvn中-DskipTests和-Dmaven.test.skip=true的区别?

    主要区别在于是否编译测试用例类。

    http://zephiruswt.blog.51cto.com/5193151/1302770

    ========================

    如何使用spark-sql获取分位数字

    可以使用spark-sql的方法:

    val df = sqlContext.sql("select flowId, percentile_approx(duration, 0.95) as approxQuantile from flowInfos group by flowId")

    这里使用到的percentile_approx可能不是所有spark-sql都支持,至少我尝试在spark-1.6版本下是不支持的。(错误)

    org.apache.spark.sql.AnalysisException: undefined function percentile_approx

    还以为是1.6不支持,原来是我的sqlContext不是创建的HiveContext,一些hive-sql的语法就不能使用

    https://stackoverflow.com/questions/36171349/using-windowing-functions-in-spark/36172311#36172311

    修改过来就可以了

    val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)

    ========================

    打的log没有打印在页面上?使用logInfo没有打印任何东西?

    ========================

    EmptyRDD怎么使用和RDD进行join?

    var rdd: org.apache.spark.rdd.RDD[FlowInfo] = sc.emptyRDD[FlowInfo]
    ...
    rdd = rdd union trdd
    
  • 相关阅读:
    es6里面的arr方法
    for循环比较
    window.location各属性的值
    浏览器的缓存机制
    es6中的双箭头函数
    前端开发模拟数据------webpack-api-mocker
    对象的深拷贝和浅拷贝
    Web应用程序的安全问题
    this指向问题
    postman使用篇最全整理
  • 原文地址:https://www.cnblogs.com/yjf512/p/7662105.html
Copyright © 2011-2022 走看看