java—使用ApacheFlink从web获取JSON元素


0

在 读取了Apache Flink的几个文档页面(官方文档,dataartisans)以及官方存储库中提供的示例之后,我不断看到一些示例,它们将这些示例用作简化已下载文件的数据源,并始终 join到localhost。

我正在尝试使用apacheflink下载包含动态数据的JSON文件。我的意图是尝试建立一个url,在那里我可以访问JSON文件作为Apache Flink的输入源,而不是用另一个系统下载它并用Apache Flink处理下载的文件。

有没有可能与Apache Flink建立这个网络 join?

1 答案


0

可以将要下载的URL定义为输入数据流,然后从MapFunction中下载文档。下面的代码演示了这一点:

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

DataStream<String> inputURLs = env.fromElements("http://www.json.org/index.html");

inputURLs.map(new MapFunction<String, String>() {
@Override
public String map(String s) throws Exception {
URL url = new URL(s);
InputStream is = url.openStream();

    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));

    StringBuilder builder = new StringBuilder();
    String line;

    try {
        while ((line = bufferedReader.readLine()) != null) {
            builder.append(line + "

");
}
} catch (IOException ioe) {
ioe.printStackTrace();
}

    try {
        bufferedReader.close();
    } catch (IOException ioe) {
        ioe.printStackTrace();
    }

    return builder.toString();
}

}).print();

env.execute("URL download job");


我来回答

写文章

提问题

面试题