从表创建json

时间:2014-03-04 16:01:02

标签: hadoop hive apache-pig

我有一张表:

CREATE EXTERNAL TABLE IF NOT EXISTS test_to_json
(
field1 string,
field2 string,
field3 string,
field4 string   
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/path';

我想从上表中制作一个json。最好的方法是什么?

预期输出:

CREATE EXTERNAL TABLE IF NOT EXISTS json_table
(
field1 string,
json_field json -- contain field2, field3, field4 in json   
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/path';

猪或蜂巢解决方案都会很棒。我只能看到相反的例子。 (从json读取数据)

感谢提前回复

2 个答案:

答案 0 :(得分:1)

UDF将是实现这一目标的更好方法。

答案 1 :(得分:0)

您可以使用Brickhouse(http://github.com/klout/brickhouse)中包含的'to_json'UDF来创建格式良好的JSON输出。沿着'named_struct'UDF使用它来定义输出的JSON的模式。有关详情,请访问http://brickhouseconfessions.wordpress.com/2014/02/07/hive-and-json-made-simple/。在您的示例中,您将创建表单

的查询
CREATE EXTERNAL TABLE json_table
AS
SELECT field1, to_json( named_struct(
   'field2' , field2,
   'field3' , field3,
   'field4' , field4 ) )
FROM test_to_json;