仕事エッセイ-20171012

4093 ワード

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.(DiskBlockManager.scala:54)
     at org.apache.spark.storage.BlockManager.(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.(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$.(ShutdownHookManager.scala:58)
     at org.apache.spark.util.ShutdownHookManager$.(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)
========================
打ったロゴはページに印刷されていませんか?ロゴInfoを使って何も印刷していませんか?
========================
EmptyRDDはどのようにRDDとjoinを行いますか?
var rdd: org.apache.spark.rdd.RDD[FlowInfo] = sc.emptyRDD[FlowInfo]
...
rdd = rdd union trdd