我在 IntelliJ 上使用 Scala API 开发 Spark 代码,当我运行它时,我得到以下错误,但在 Databricks 笔记本上运行良好。
我正在使用 Databricks Connect 从 IntelliJ 的本地安装连接到 Databricks Spark 集群。我已连接到集群,并且也能够从 IntelliJ 向集群提交作业。AMOF,除了下面的部分,其他一切都有效。
DBConnect 是 6.1 ,Databricks Runtime 是 6.2 从集群中导入 jar 文件(使用 Databricks-connect get-jar-dir )并使用项目库中的 jar 设置 SBT 项目
源代码:
val sparkSession = SparkSession.builder.getOrCreate()
val sparkContext = sparkSession.sparkContext
import sparkSession.implicits._
val v_textFile_read = sparkContext.textFile(v_filename_path)
v_textFile_read.take(2).foreach(println)
错误:
cannot assign instance of scala.Some to field org.apache.spark.rdd.RDD.org$apache$spark$rdd$RDD$$dependencies_ of
type scala.collection.Seq in instance of org.apache.spark.rdd.HadoopRDD
我对文本使用 RDD 阅读器的原因是我可以将此输出传递给 createDataFrame API。如您所知,createdataframe API 将 RDD 和模式作为输入参数。
步骤1:val v_RDD_textFile_read = sparkContext.textFile(v_filename_path).map(x => MMRSplitRowIntoStrings(x))
第 2 步:(已val v_DF_textFile_read = sparkSession.sqlContext.createDataFrame(v_RDD_textFile_read, v_schema)
编辑