【发布时间】:2015-04-07 20:45:42
【问题描述】:
我正在使用大象鸟项目将 json 文件加载到猪。 但我不确定如何在加载时定义架构。没有找到相同的描述。
数据:
{"id":22522,"name":"Product1","colors":["Red","Blue"],"sizes":["S","M"]}
{"id":22523,"name":"Product2","colors":["White","Blue"],"sizes":["M"]}
代码:
feed = LOAD '$INPUT' USING com.twitter.elephantbird.pig.load.JsonLoader() AS products_json;
extracted_products = FOREACH feed GENERATE
products_json#'id' AS id,
products_json#'name' AS name,
products_json#'colors' AS colors,
products_json#'sizes' AS sizes;
describe extracted_products;
结果:
extracted_products: {id: chararray,name: bytearray,colors: bytearray,sizes: bytearray}
如何为它们提供正确的架构(int、string、array、array)以及如何将数组元素展平为行?
提前致谢
【问题讨论】:
-
我已经尝试过 (chararray)products_json#'id' 并且有效,但它不是太复杂并且不确定我应该如何转换数组。
-
Pig 不支持数组类型的数据类型。一种选择是您可以将其存储为 chararray。
标签: arrays json apache-pig elephantbird