Scala “线程中的异常”;“主要”;java.lang.IllegalArgumentException:需求失败
在这里,我试图将时间戳动态地添加到数据帧中,添加到传入的数据中 {“动作”:“事件”,“id”:1173,“lat”:0.0,“lon”:0.0,“rollid”:55,“事件”:“类型”,“ccd”:0,“fone”:“ione”,“版本”:“10.1”,“项目”:“shack”} 对于上面的传入数据,我试图用下面的代码附加时间戳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
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解决了我的问题。