Hivesql Access Json-array Values
I have a table in Hive, which is generated by reading from a Sequence File in my HDFS. Those sequence files are json and look like this: {'Activity':'Started','CustomerName':'Custo
Solution 1:
You can do this in two steps.
Create proper JSON table
CREATE external TABLE temp.test_json (
activity string,
bricktotalamount int,
color array<struct<amount:int, name:string>>,
customername string,
datetime string,
deviceid string,
orderid string)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
location '/tmp/test_json/table'Explode the Table in Select Statement
select activity, bricktotalamount, customername, datetime, deviceid, orderid, name, amount from temp.test_json
lateralview inline(color) c as amount,name
Solution 2:
The data inside of your array is definitely not a map for hive, you need to specify. I would recommend redefine your table specifying the structure of the array's data like this
CREATE EXTERNAL TABLE iotdata(
activity STRING,
customername STRING,
deviceid STRING,
orderid STRING,
datetime STRING,
color ARRAY<STRUCT<NAME: STRING,AMOUNT:BIGINT>>
bricktotalamount STRING
)
ROW FORMAT SERDE "org.apache.hive.hcatalog.data.JsonSerDe"
STORED AS
INPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat'
LOCATION '/IoTData/scray-data-000-v0';
in that way you should be able to the structure it self


Post a Comment for "Hivesql Access Json-array Values"