2016-12-16 65 views
0

我有一些数据在下面的键值表单中,我需要将它加载到Pig中。将一些带有数组值的键加载到猪中

{"California":["NJ","Seattle","NY"],"NJ":["California","Seattle","NY"],"NY":["NJ","Seattle","California"],"Seattle":["NJ","California","NY"]} 

该数据正在一行中获取。我最终需要能够访问作为源的键以及作为Pig中可能的目的地的值的数组。

我尝试了几种使用JsonLoader,elephantbird JSON加载器来加载这些数据的方法,但它不断返回空白而不是数据。

请帮忙。

回答

0

JsonLoader希望预定义的模式不像您拥有的那样存在。你的数据集有多大?如果它不是那么大,你最好写一个简单的python/Java UDF,它接受整个json字符串,转换成你想要的一系列元组。在您的猪脚本中,只需调用此UDF并在由其返回的包上呼叫FLATTEN

+0

感谢您的回复。我从来没有写过任何UDF,所以试图检查替代方法,如果可用。数据不会很大。你知道我可以尝试和调整的任何现有的UDF吗? –

+0

编写UDF非常简单。您应该查看文档和简单的教程/示例,其中详细解释了相同的内容:https://pig.apache.org/docs/r0.9.1/udf.html。如果您正在编写Java UDF,则可以使用java中的许多json库。 Python有一个json库,您需要导入以执行相同的操作 – coder

+0

我不确定应该将这种数据类型映射到Java中,以便最终能够获取所有源作为密钥和所有相应的目标。我必须在脚本中使用这些值来进一步构建逻辑。鉴于紧迫性,我想检查是否有人以前做过这件事。 –