从表创建json

goqiplq2  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(285)

我有一张这样的table:

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';

Pig或Hive的解决方案将是伟大的。我只能看到相反的例子(从json读取数据)
感谢您提前回复

6kkfgxo0

6kkfgxo01#

您可以使用brickhouse(http://github.com/klout/brickhouse )创建格式良好的json输出。在“named_struct”自定义项中使用它来定义输出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;
mf98qq94

mf98qq942#

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

相关问题