Scala 在Spark流上的DStream.transform()中使用SQL?
在Scala 在Spark流上的DStream.transform()中使用SQL?,scala,apache-spark,spark-streaming,apache-spark-sql,Scala,Apache Spark,Spark Streaming,Apache Spark Sql,在foreachRDD()中有一些使用SQL over Spark流的示例。但是如果我想在tranform()中使用SQL: 我犯了这样的错误: [错误]/Users/raochenlin/Downloads/spark-1.2.0-bin-hadoop2.4/logstash/src/main/scala/logstash.scala:52:方法转换没有类型参数:(transformFunc:org.apache.spark.rdd.rdd[String]=>org.apache.spark.
foreachRDD()
中有一些使用SQL over Spark流的示例。但是如果我想在tranform()
中使用SQL:
我犯了这样的错误:
[错误]/Users/raochenlin/Downloads/spark-1.2.0-bin-hadoop2.4/logstash/src/main/scala/logstash.scala:52:方法转换没有类型参数:(transformFunc:org.apache.spark.rdd.rdd[String]=>org.apache.spark.rdd.rdd[U])(隐式证据$5:scala.reflect.ClassTag[U])org.apache.spark.stream.dstream.dstream[U]存在,以便将其应用于参数(org.apache.spark.rdd.rdd[String]=>org.apache.spark.rdd.rdd[\u>:LogStash.AlertMsg with String
dstream.transform
获取函数transformFunc:(rdd[T])⇒ RDD[U]
在这种情况下,if
必须在条件的两次评估中产生相同的类型,但情况并非如此:
if (count == 0) => RDD[String]
if (count > 0) => RDD[AlertMsg]
在这种情况下,删除if rdd.count…
的优化,这样您就有了唯一的转换路径
if (count == 0) => RDD[String]
if (count > 0) => RDD[AlertMsg]