在pyspark sparkSession
中,用sc
为我的sparkContext
,调用getRDDStorageInfo()
Java SparkContext,_jsc.sc()
,方法返回RDDInfo[]
的JavaObject实例,我可以在Python中迭代。
sc._jsc.sc().getRDDStorageInfo()
返回JavaObject id=o473
所以以下工作:
for s in sc._jsc.sc().getRDDStorageInfo():
print s.name()
print s.memSize()
print s.numPartitions()
print s.numCachedPartitions()
但是,Java SparkContext方法listFiles()
返回scala.collection.Seq<String>
的JavaObject。
sc._jsc.sc().listFiles()
返回JavaObject id=o475
当我尝试并迭代时,我会得到TypeError: 'JavaObject' object is not iterable
如何将scala.collection.Seq<String>
的JavaObject转换为Python列表(或其他python Itable(?
您可以调用Scala方法size
和apply
进行此操作
files = sc._jsc.sc().listFiles()
py_files = [files.apply(i) for i in range(files.size())]