批处理层:Spark如何从Master Data中读取并处理新数据?
Batch layer: How does Spark read and process new data from Master Data?
我正在构建一个 lambda 架构,我编写了流层,现在我正在做批处理层。为此,我使用 Spark 2 作为批处理器,使用 HDFS 作为主数据。
为了从HDFS读取数据,我写了下面这段代码:
SparkSession spark = SparkSession
.builder()
.appName("JavaWordCount")
.master("local")
.config("spark.sql.warehouse.dir", "file:///c:/tmp/spark-warehouse")
.getOrCreate();
JavaRDD<String> msg = spark.read().textFile("HDFS://mypath/*").javaRDD();
但是,使用此代码,不会读取在运行 Spark 后插入 HDFS 的新数据。我想知道我怎么可能做到这一点?
是否只有结构化流式处理 (http://spark.apache.org/docs/latest/structured-streaming-programming-guide.html) 的解决方案,还是有其他解决方案?
是的,在我看来,Spark 2.x Structure Streaming 可以做到这一点。
我建议您观看 2017 年 Spark 峰会的演示文稿:https://www.youtube.com/watch?list=PLTPXxbhUt-YVEyOqTmZ_X_tpzOlJLiU2k&v=IJmFTXvUZgY
我正在构建一个 lambda 架构,我编写了流层,现在我正在做批处理层。为此,我使用 Spark 2 作为批处理器,使用 HDFS 作为主数据。
为了从HDFS读取数据,我写了下面这段代码:
SparkSession spark = SparkSession
.builder()
.appName("JavaWordCount")
.master("local")
.config("spark.sql.warehouse.dir", "file:///c:/tmp/spark-warehouse")
.getOrCreate();
JavaRDD<String> msg = spark.read().textFile("HDFS://mypath/*").javaRDD();
但是,使用此代码,不会读取在运行 Spark 后插入 HDFS 的新数据。我想知道我怎么可能做到这一点?
是否只有结构化流式处理 (http://spark.apache.org/docs/latest/structured-streaming-programming-guide.html) 的解决方案,还是有其他解决方案?
是的,在我看来,Spark 2.x Structure Streaming 可以做到这一点。
我建议您观看 2017 年 Spark 峰会的演示文稿:https://www.youtube.com/watch?list=PLTPXxbhUt-YVEyOqTmZ_X_tpzOlJLiU2k&v=IJmFTXvUZgY