一般来说,我尝试做的是:
JavaRDD<String>
,我想阅读
每个json文件在同一个Spark集群中进行进一步处理不幸的是,我正在努力使用上述RDD直接加载jsons。现在我只能将URI收集到驱动程序的内存中,稍后使用群集读取它们。它的内存和CPU效率低下(可能有很多URI)。
您是否知道如何在不将数据合并到流程中的单个点的情况下执行此操作?或者也许我应该考虑完全不同的解决方案(请记住,Spark,S3和ES将继续存在)?
这是我当前解决方案的片段:
String[] uris = JavaEsSpark.esJsonRDD(sparkContext, esResource, esQuery)
.keys() // let's assume s3 ids are here
.map(this::createS3Uri)
.collect();
Dataset<Row> jsons = sparkSession.read().json(uris);
// some further process here