我有一张表:
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读取数据)
感谢提前回复
答案 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;