在pyspark sparkSession
中,以sc
作为我的sparkContext
,调用getRDDStorageInfo()
Java sparkContext _jsc.sc()
,该方法返回一个我可以在python中进行迭代的RDDInfo[]
的JavaObject实例。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()
返回的JavaObject为scala.collection.Seq<String>
。sc._jsc.sc().listFiles()
返回JavaObject id=o475
当我尝试遍历时,我得到
TypeError: 'JavaObject' object is not iterable
如何将
scala.collection.Seq<String>
的JavaObject转换为python列表(或其他可迭代的python)? 最佳答案
您可以调用scala方法size
和apply
来执行此操作
files = sc._jsc.sc().listFiles()
py_files = [files.apply(i) for i in range(files.size())]