【发布时间】:2017-11-08 13:33:33
【问题描述】:
我有大量的JSON 文件需要转换为Parquet。它们看起来像这样:
{
"foo": "bar",
"props": {
"prop1": "val1",
"prop2": "val2"
}
}
我需要将它们转换成一个Parquet 文件,其结构是这样的(嵌套属性被设置为顶级并获得_ 作为后缀):
foo=bar
_prop1=val1
_prop2=val2
现在要注意了:并非所有JSON 文档都具有相同的属性。因此,如果 doc1 具有 prop1 和 prop2,但 doc2 具有 prop3,则最终的 Parquet 文件必须具有这三个属性(其中一些属性对于某些记录将为空)。
我知道Parquet 需要预先设置schema,所以我目前的计划是:
- 遍历所有
JSON文件 - 推断每个文档的
schema(使用 Kite,like this) - 合并所有
schemas - 开始写
Parquet
这种方法给我的印象是非常复杂、缓慢且容易出错。我想知道使用Spark 是否有更好的方法来实现这一点。
【问题讨论】:
标签: java hadoop apache-spark avro emr