json - 配置单元 : How to explode a JSON column with an array, 并嵌入到 CSV 文件中?

标签 json csv hadoop hive explode

从一个 CSV 文件(带有一个标题和一个管​​道分隔符)我得到了以下内容,其中包含一个 JSON 列(里面有一个集合),如下所示:

ProductId|IngestTime|ProductOrders
9180|20171025145034|[{"OrderId":"299","Location":"NY"},{"OrderId":"499","Location":"LA"}]
8251|20171026114034|[{"OrderId":"1799","Location":"London"}]

我需要创建一个返回的 SELECT Hive 查询:

ProductId  IngestTime      OrderId        OrderLocation
9180       20171025145034  299            NY
9180       20171025145034  499            LA
8251       20171026114034  1799           London

到目前为止,我尝试了很多组合,使用 'explode'、'get_json_object' 等,但我仍然没有找到正确的 SQL 查询。

你有解决办法吗?

非常感谢您的帮助:-)

最佳答案

我有类似的要求。来自 this 的解决方案链接帮我解决了。 顺便说一句,假设您的 DB_TABLE 中的所有列都是“字符串”类型,下面是对您的要求的查询。

    SELECT ProductId,
       IngestTime,
       split(split(results,",")[0],':')[1] AS OrderId,
       regexp_replace(split(split(results,",")[1],':')[1], "[\\]|}]", "") AS OrderLocation
    FROM
       (SELECT ProductId,
             IngestTime,
             split(translate(ProductOrders, '"\\[|]|\""',''), "},") AS r
       FROM DB_TABLE) t1 LATERAL VIEW explode(r) rr AS results

关于json - 配置单元 : How to explode a JSON column with an array, 并嵌入到 CSV 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46942426/

相关文章:

Python csv.reader 自动转换 ISO 日期?

hadoop - mapreduce 程序没有给我任何输出。有人可以看看吗?

javascript - 将 JSON 对象的表示更改为显式键/值格式

ios - swift - 如何从服务器获取 JSON 响应

json - jq中如何连接两个数组

angularjs - 解析由 Angular 中的输入提供的 CSV 文件

PHP:字符串不等于字符串

python - 如何截断字典中的数据以使生成的 JSON 不超过 n 个字节?

hadoop - hadoop副本保留所有权/权限

hadoop - 通过 Hue 更新 HDFS 中的文件