使用HCFS读取JSON-换行文件

时间:2019-04-30 20:14:15

标签: hadoop apache-flink google-cloud-dataproc

如何使用**/*S0.json之类的模式从Google Cloud Storage中读取Flink HCFS连接器,其中文件包含换行符分隔的JSON数据?

文件包含类似内容

{"message": "Hello world", "timestamp": 1556655155}
{"message": "Goodbye world", "timestamp": 1556655170}

在GCS用户界面中,它看起来像这样:

Sample files

跟随Consume GCS files based on pattern from Flink

1 个答案:

答案 0 :(得分:1)

从HCFS将reading JSON文件作为纯文本之后,您可以使用map custom mapperJSONObject

import org.apache.flink.api.java.DataSet;
import org.apache.sling.commons.json.JSONObject;

DataSet<JSONObject> jsonInput = 
    input
        .map(record -> record.f1.toString())
        .map(StringToJsonObject::new);

JSONObject映射器代码基于上面链接的示例:

import org.apache.flink.api.common.functions.MapFunction;
import org.apache.sling.commons.json.JSONObject;

public class StringToJsonObject implements MapFunction<String, JSONObject> {
    private static final long serialVersionUID = 4573928723585302447L;

    public JSONObject map(String content) throws Exception {
        return new JSONObject(content);
    }
}

如有必要,您可以使用类似于this one的映射器将String映射到POJO而不是通用JSONObject