4

pysparkコードのプロファイリングを理解したいと思います。これに続いてpysparkジョブをプロファイルする方法

https://github.com/apache/spark/pull/2351

>>> sc._conf.set("spark.python.profile", "true") 
>>> rdd = sc.parallelize(range(100)).map(str) 
>>> rdd.count() 
100 
>>> sc.show_profiles() 
============================================================ 
Profile of RDD<id=1> 
============================================================ 
     284 function calls (276 primitive calls) in 0.001 seconds 

    Ordered by: internal time, cumulative time 

    ncalls tottime percall cumtime percall filename:lineno(function) 
     4 0.000 0.000 0.000 0.000 serializers.py:198(load_stream) 
     4 0.000 0.000 0.000 0.000 {reduce} 
    12/4 0.000 0.000 0.001 0.000 rdd.py:2092(pipeline_func) 
     4 0.000 0.000 0.000 0.000 {cPickle.loads} 
     4 0.000 0.000 0.000 0.000 {cPickle.dumps} 
     104 0.000 0.000 0.000 0.000 rdd.py:852(<genexpr>) 
     8 0.000 0.000 0.000 0.000 serializers.py:461(read_int) 
     12 0.000 0.000 0.000 0.000 rdd.py:303(func) 

上記は素晴らしい作品。しかし、私が以下のようなことをすれば:

from pyspark.sql import HiveContext 
from pyspark import SparkConf 
from pyspark import SparkContext 
conf = SparkConf().setAppName("myapp").set("spark.python.profile","true") 
sc = SparkContext(conf=conf) 
sqlContext = HiveContext(sc) 

df=sqlContext.sql("select * from myhivetable") 
df.count() 
sc.show_profiles() 

これは私に何も与えません。私は任意の助けが

答えて

3

に感謝し、あなたがスパークSQLを使用するときにプロファイルするいかなるPythonコードはありません私にNone

を与えるshow_profiles()カウントを取得けど。唯一のPythonはScalaエンジンを呼び出すことです。他はすべてJava仮想マシン上で実行されます。

+0

私はプロファイルしたい複雑なpysparkジョブを持っています。それではどうしますか?標準的な解決策はありますか? – sau

+0

JVMコード(例えばVisualVM)とPythonを別々にプロファイルする必要がありますが、簡単ではありません。 –

関連する問題