Scala “线程中的异常”;“主要”;java.lang.IllegalArgumentException:需求失败

Scala “线程中的异常”;“主要”;java.lang.IllegalArgumentException:需求失败,scala,spark-streaming,spark-dataframe,Scala,Spark Streaming,Spark Dataframe,在这里,我试图将时间戳动态地添加到数据帧中,添加到传入的数据中 {“动作”:“事件”,“id”:1173,“lat”:0.0,“lon”:0.0,“rollid”:55,“事件”:“类型”,“ccd”:0,“fone”:“ione”,“版本”:“10.1”,“项目”:“shack”} 对于上面的传入数据,我试图用下面的代码附加时间戳 foreachRDD(rdd=> 74 { 75 val sqlContext = new org.apache.spar

在这里,我试图将时间戳动态地添加到数据帧中,添加到传入的数据中

{“动作”:“事件”,“id”:1173,“lat”:0.0,“lon”:0.0,“rollid”:55,“事件”:“类型”,“ccd”:0,“fone”:“ione”,“版本”:“10.1”,“项目”:“shack”}

对于上面的传入数据,我试图用下面的代码附加时间戳

foreachRDD(rdd=>
         74 {
         75 val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
         76 import sqlContext.implicits._
         77 val dataframe =sqlContext.read.json(rdd.map(_._2)).toDF()
         78 import org.apache.spark.sql.functions._
         79  val newDF=dataframe.withColumn("Timestamp_val",current_timestamp())
         80 newDF.show()
         81 newDF.printSchema()
这应该会让我像下面这样

但这段代码让我头疼,有时它正在打印模式,有时它在“行号79”处抛出此异常

java.lang.IllegalArgumentException:需求失败 在scala.Predef$.require处(Predef.scala:221) 位于org.apache.spark.sql.catalyst.analysis.unsolvedstar.expand(unresolved.scala:199) 位于org.apache.spark.sql.catalyst.Analyzer$resolverences$$anonfun$apply$10$$anonfun$applyorlse$14.apply(Analyzer.scala:354) 位于org.apache.spark.sql.catalyst.Analyzer$resolverences$$anonfun$apply$10$$anonfun$applyorlse$14.apply(Analyzer.scala:353) 位于scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251) 位于scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251) 位于scala.collection.mutable.resizeblearray$class.foreach(resizeblearray.scala:59) 位于scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47) 位于scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251) 位于scala.collection.AbstractTraversable.flatMap(Traversable.scala:105) 位于org.apache.spark.sql.catalyst.analysis.Analyzer$resolverences$$anonfun$apply$10.applyOrElse(Analyzer.scala:353) 位于org.apache.spark.sql.catalyst.analysis.Analyzer$resolverences$$anonfun$apply$10.applyOrElse(Analyzer.scala:347) 在org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveOperators$1.apply上(LogicalPlan.scala:57) 在org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveOperators$1.apply上(LogicalPlan.scala:57) 位于org.apache.spark.sql.catalyst.trees.CurrentOrigin$.withOrigin(TreeNode.scala:69) 位于org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveOperators(LogicalPlan.scala:56) 位于org.apache.spark.sql.catalyst.analysis.Analyzer$resolverences$.apply(Analyzer.scala:347) 位于org.apache.spark.sql.catalyst.analysis.Analyzer$resolverences$.apply(Analyzer.scala:328) 位于org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$execute$1$$anonfun$apply$1.apply(RuleExecutor.scala:83) 位于org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$execute$1$$anonfun$apply$1.apply(RuleExecutor.scala:80) 在scala.collection.LinearSeqOptimized$class.foldLeft处(LinearSeqOptimized.scala:111) 位于scala.collection.immutable.List.foldLeft(List.scala:84) 位于org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$execute$1.apply(RuleExecutor.scala:80) 位于org.apache.spark.sql.catalyst.rules.RuleExecutor$$anonfun$execute$1.apply(RuleExecutor.scala:72) 位于scala.collection.immutable.List.foreach(List.scala:318) 位于org.apache.spark.sql.catalyst.rules.RuleExecutor.execute(RuleExecutor.scala:72) 在org.apache.spark.sql.execution.QueryExecution.analysisted$lzycompute(QueryExecution.scala:36) 位于org.apache.spark.sql.execution.QueryExecution.analysis(QueryExecution.scala:36) 位于org.apache.spark.sql.execution.QueryExecution.assertAnalyzed(QueryExecution.scala:34) 位于org.apache.spark.sql.DataFrame(DataFrame.scala:133) 位于org.apache.spark.sql.DataFrame.org$apache$spark$sql$DataFrame$$withPlan(DataFrame.scala:2126) 位于org.apache.spark.sql.DataFrame.select(DataFrame.scala:707) 位于org.apache.spark.sql.DataFrame.withColumn(DataFrame.scala:1188) 在HiveGenerator$$anonfun$main$1.apply(HiveGenerator.scala:79) 在HiveGenerator$$anonfun$main$1.apply(HiveGenerator.scala:73)


我哪里出错了,请帮忙。

从stackoverflow聊天中得知

像这样把它修好了

df.withColumn("current_time",lit(CurrentDate))
作为.withColumn()中的第二个参数,将需要一个命名列和

val newDF=dataframe.withColumn("Timestamp_val",current_timestamp())

不会生成命名列,因此出现异常。

从stackoverflow聊天中得知

像这样把它修好了

df.withColumn("current_time",lit(CurrentDate))
作为.withColumn()中的第二个参数,将需要一个命名列和

val newDF=dataframe.withColumn("Timestamp_val",current_timestamp())

不会生成命名列,因此出现异常。

哈哈,我在回答中没有提到你。谢谢@mtoto解决了我的问题。哈哈,我在回答中没有提到你。感谢@mtoto解决了我的问题。