Hadoop Spark Streaming:将数据流批连接到单个输出文件夹中

Hadoop Spark Streaming:将数据流批连接到单个输出文件夹中,hadoop,apache-spark,spark-streaming,apache-spark-sql,twitter-streaming-api,Hadoop,Apache Spark,Spark Streaming,Apache Spark Sql,Twitter Streaming Api,我使用Spark Streaming通过创建StreamingContext从twitter获取推文,如下所示:val ssc=new StreamingContext(“local[3]”,“TwitterFeed”,Minutes(1)) 并将twitter流创建为: val tweetStream=TwitterUtils.createStream(ssc,一些(新的OAuthAuthorization(Util.config)),过滤器) 然后将其保存为文本文件 tweets.repar

我使用Spark Streaming通过创建StreamingContext从twitter获取推文,如下所示:
val ssc=new StreamingContext(“local[3]”,“TwitterFeed”,Minutes(1))

并将twitter流创建为:
val tweetStream=TwitterUtils.createStream(ssc,一些(新的OAuthAuthorization(Util.config)),过滤器)

然后将其保存为文本文件
tweets.repartition(1).保存ASTEXTFILES(“/tmp/spark\u testing/”)

问题是,tweets被保存为基于批处理时间的文件夹,但我需要在同一个文件夹中保存每个批的所有数据

有什么解决办法吗


感谢

我们可以使用Spark SQL新的数据帧保存API实现这一点,该API允许附加到现有输出。默认情况下,saveAsTextFile无法保存到包含现有数据的目录中(请参阅)。介绍如何设置用于Spark流的Spark SQL上下文

假设使用SQLContextSingleton从指南中复制该部分,生成的代码如下所示:

data.foreachRDD{rdd =>
  val sqlContext = SQLContextSingleton.getInstance(rdd.sparkContext)
  // Convert your data to a DataFrame, depends on the structure of your data
  val df = ....
  df.save("org.apache.spark.sql.json", SaveMode.Append, Map("path" -> path.toString))
}

(注意,上面的示例使用JSON保存结果,但您也可以使用不同的输出格式)。

我可以将DF保存为文本文件吗?正如我所见,默认类型是拼花地板。源代码应该是什么?@Holden,@HussainShaik我也有同样的问题,使用了你的解决方案,但一直得到一个错误-找不到:value path
[error]df.save(“com.databricks.spark.csv”,SaveMode.Append,Map(“path”->path.toString))
。有没有办法解决这个问题?需要将路径定义为您要保存它的位置。@Holden谢谢..我找到了。如果我可以再问一个问题。。。我试图收集这一文件中的推文。该文件现在可以创建了,但我没有看到任何tweet保存在其中。这是我的代码片段:@serendipity:你的代码片段没有发布。你最好再提出一个问题,而不是在这个问题上发表评论。