如何使用**/*S0.json
之类的模式从Google Cloud Storage中读取Flink HCFS连接器,其中文件包含换行符分隔的JSON数据?
文件包含类似内容
{"message": "Hello world", "timestamp": 1556655155}
{"message": "Goodbye world", "timestamp": 1556655170}
在GCS用户界面中,它看起来像这样:
答案 0 :(得分:1)
从HCFS将reading JSON文件作为纯文本之后,您可以使用map custom mapper到JSONObject
:
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
。