rows = df.collect() keys = [(key, max([len(unicode(r[key])) for r in rows])) for key in df.columns] format = ' | '.join(['%%%ds' % (v) for k,v in keys]) for row in rows: try: print format % tuple([unicode(row[k]) for k, v in keys]) except: print row