在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方法sizeapply来执行此操作

files = sc._jsc.sc().listFiles()
py_files = [files.apply(i) for i in range(files.size())]

10-06 01:01