Man*_*l G 3 apache-spark apache-spark-sql spark-dataframe
我有一些spark scala代码在spark-shell中没有问题.
这个问题的核心在于这几条线.我想在数据框中添加一行:
object SparkPipeline {
def main(args: Array[String]) {
val spark = (SparkSession
.builder()
.appName("SparkPipeline")
.getOrCreate()
)
df = (spark
.read
.format("com.databricks.spark.avro")
.load(DATA_PATH)
)
case class DataRow(field1: String, field2: String)
val row_df = Seq(DataRow("FOO", "BAR")).toDF() // THIS FAILS
val df_augmented = df.union(row_df)
//
// Additional code here
//
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我使用sbt将其打包为jar时,sbt失败并出现以下错误:
value toDF is not a member of Seq[DataRow]
Run Code Online (Sandbox Code Playgroud)
我试着按照这个问题来做:
val spark = (SparkSession
.builder()
.appName("TrainSimpleRF")
.getOrCreate()
)
val sc = spark.sparkContext
val sqlContext= new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._
Run Code Online (Sandbox Code Playgroud)
哪个不能解决问题.也尝试导入spark.implicits_无济于事.我在main方法中有所有代码.我认为这可能很重要(根据cloudera论坛中的一些答案),但无论我如何构建代码,都无法使其工作.
我如何使其工作?任何帮助都非常受欢迎.
Man*_*l G 10
好吧,我找到了解决办法,如规定这个岗位,我不得不移动类定义的主要功能外,如:
// Define the class DataRow prior to the object with the main method
case class DataRow(field1: String, field2: String)
object SparkPipeline {
def main(args: Array[String]) {
val spark = (SparkSession
.builder()
.appName("SparkPipeline")
.getOrCreate()
)
df = (spark
.read
.format("com.databricks.spark.avro")
.load(DATA_PATH)
)
val row_df = Seq(DataRow("FOO", "BAR")).toDF() // THIS FAILS
val df_augmented = df.union(row_df)
//
// Additional code here
//
}
}
Run Code Online (Sandbox Code Playgroud)
我花了一段时间来处理这个答案,但它在那里.
| 归档时间: |
|
| 查看次数: |
6612 次 |
| 最近记录: |