我刚刚在Intelli J IDEAs(v.2016.2
)“评估表达式”窗口中遇到了意外行为:
虽然这有效,但作为编译代码和使用“评估表达式”窗口
val df1 = spark.read.json("/examples/src/main/resources/people.json")
df1.columns.foreach(println) // outputs "age" and "name" to console
涉及由表达式生成的某些Dataset[Row]
的另一个DataFrame
(Columns
)仅用作编译代码,而在“Evaluate Expression”窗口中显示以下异常:
com.intellij.debugger.engine.evaluation.EvaluateException:
Type mismatch Can't assign org.apache.spark.sql.Dataset to scala.runtime.ObjectRef
两个数据框都属于class org.apache.spark.sql.Dataset
类。根据Intelli Js documentation,唯一的限制是:
- 只能在“表达式评估”对话框中调用方法 如果调试器已在断点处停止,但尚未暂停。
- 表达式评估只能是“单级”。换句话说,如果 IntelliJ IDEA在从。调用的方法中的断点处停止 表达式评估,您不能使用表达式评估 功能再次。
- 如果在Expression Evaluation中调用的方法有一个 在它的体内断点,这个断点将被忽略。
这显然只是事实的一半。