2017-09-06 13 views
-1

sparkストリーミングアプリケーションを実行していますが、最終的にハイブに保存すると、SPARKUI SQLタブに注目された最初のストリーミングミニバッチでは15kbのデータが約50秒、スパークストリーミングのすべてのミニバッチが増加するため、SaveAsTableのパフォーマンスを改善する方法

saveAsTable at NativeMethodAccessorImpl.java:0+details  
org.apache.spark.sql.DataFrameWriter.saveAsTable(DataFrameWriter.scala:358) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl. 
invoke(NativeMethodAccessorImpl.java:62) 
sun.reflect.DelegatingMethodAccessorImpl.invoke 
(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:498) 
py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) 
py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357) 
py4j.Gateway.invoke(Gateway.java:280) 
py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) 
py4j.commands.CallCommand.execute(CallCommand.java:79) 
py4j.GatewayConnection.run(GatewayConnection.java:214) 
java.lang.Thread.run(Thread.java:745) 

答えて

0

デフォルトではSpark DFを作成するときに200個のパーティションが作成され、小さなデータ200個ではパフォーマンスが低下することがあります。

パーティションの数を減らし、それが役立つかどうかを確認することをお勧めします。あなたは、ファイルへのクラスタからデータを書き込むので、10

よろしく、

Neeraj

0

にパーティションを減らすためのステートメントの上に使用することができます

sqlContext.setConf("spark.sql.shuffle.partitions", "10") 

マスタにデータを移動する必要がノードでは、多くのシャッフルが行われます。

  • 圧縮データ
  • があなたのJVMのガベージコレクション
  • あなたのシャッフルを増やして周り再生、ネットワークを介して送信する前にシリアライザ

    • 使用Kryo:私が提供できるいくつかの提案を調整するために、次の方法でごSparkContextですメモリ
  • 関連する問題