【发布时间】:2018-12-03 20:54:43
【问题描述】:
我正在尝试使用 SparkStreaming 将流数据存储到 HDFS 中,但它会继续在 新文件 中创建并附加到单个文件或几个多个文件中
如果它继续创建n个文件,我觉得效率不会很高
代码
lines.foreachRDD(f => {
if (!f.isEmpty()) {
val df = f.toDF().coalesce(1)
df.write.mode(SaveMode.Append).json("hdfs://localhost:9000/MT9")
}
})
在我的 pom 中,我使用了各自的依赖项:
- spark-core_2.11
- spark-sql_2.11
- spark-streaming_2.11
- spark-streaming-kafka-0-10_2.11
【问题讨论】:
-
如果你正在从 Kafka 读取数据到 HDFS,我建议你考虑使用 Nifi 或 Kafka Connect。不要为现有解决方案重写代码
-
hdfs 意味着一次写入多次读取,您无法写入同一个文件。为了做到这一点,您必须执行 hive 和 hbase 遵循的压缩类型的过程跨度>
标签: apache-spark apache-spark-sql spark-streaming