为了处理来自API的数据,我将所有JSONArray格式的数据集放在HDFS中为:
[{"a":"b"},{"a":"d"} .... ]
我知道这种不好 JSON格式,并且我需要 JSON记录格式。 因此,他确实具有良好的HDFS分区,并且很难用Spark解析和读取它。
Spark能够解析架构和行号。但是,我只有一个分区(逻辑)。 为了处理此数据集并将其发送到Kafka,我想使用Spark进行简单的分区。
实际上,我们说我的数据集为40GB,而我的执行者每位执行者不能超过10GB。
如您所料,它不起作用,因为他无法读取内存中的所有内容。
作为我的数据源的Web API不会更改格式。我必须做。
但是在哪里?
如果我不能给执行者更多的资源,我将无法读取和重新分配它。
我可以看到的唯一解决方案是,在以“ hdfs”格式将其以良好的json记录格式“存储”之前,可以在Bash脚本中对该数据进行预处理,这使我可以在Spark中读取它。我说的对吗?
是否无法通过InputStream读取此文件,解析流并直接创建json记录文件? NameNode是否将使用stream.write在HDFS中对该数据进行分区?
感谢您的帮助。