我需要Spark数据框的有用的字符串表示形式。我通过df.show
获得的代码很棒-但我无法以字符串形式获得该输出,因为showString
调用的内部show
方法是私有(private)的。有什么方法可以得到相似的输出,而无需编写重复相同功能的方法?
最佳答案
如果您确实打算重用现有代码,则可以通过反射访问showString
scala> val df = spark.range(10)
df: org.apache.spark.sql.Dataset[Long] = [id: bigint]
scala> val showString = classOf[org.apache.spark.sql.DataFrame].getDeclaredMethod("showString", classOf[Int], classOf[Int], classOf[Boolean])
showString: java.lang.reflect.Method = public java.lang.String org.apache.spark.sql.Dataset.showString(int,int,boolean)
scala> showString.setAccessible(true)
scala> showString.invoke(df, 10.asInstanceOf[Object], 20.asInstanceOf[Object], false.asInstanceOf[Object]).asInstanceOf[String]
res2: String =
"+---+
| id|
+---+
| 0|
| 1|
| 2|
| 3|
| 4|
| 5|
| 6|
| 7|
| 8|
| 9|
+---+
"
关于apache-spark - 如何获取DataFrame的字符串表示形式(以及Dataset.show一样)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51218439/