将复杂的Json数据导入到hive中

2023-12-01

需要一点勺子喂养,如何将复杂的 json 导入到 hive 中。 Json 文件格式为:{"some-headers":"", "dump":[{"item-id":"item-1"},{"item-id":"item-2"},...]}。 Hive 具有以下给出的字段dump。 Json 文件大小目前不超过 200MB,但由于是转储,很快就会达到 GB。任何其他可能的方法将不胜感激。


发布端到端解决方案。将 JSON 转换为 Hive 表的分步过程:

步骤1)安装maven(如果尚未安装)

>$ sudo apt-get install maven

步骤 2)安装 git(如果尚未安装)

>sudo git clone https://github.com/rcongiu/Hive-JSON-Serde.git

步骤3)进入$HOME/HIVE-JSON Serde文件夹

步骤4)构建serde包

>sudo mvn -Pcdh5 clean package

步骤5)serde文件将位于$HOME/Hive-JSON-Serde/json-serde/target/json-serde-1.3.7-SNAPSHOT-jar-with-dependency.jar

步骤6)将serde添加为hive中的依赖jar

 hive> ADD JAR $HOME/Hive-JSON-Serde/json-serde/target/json-serde-1.3.7- SNAPSHOT-jar-with-dependencies.jar;

步骤7)在$HOME/books.json中创建json文件(示例)

{"value": [{"id": "1","bookname": "A","properties": {"subscription": "1year","unit": "3"}},{"id": "2","bookname":"B","properties":{"subscription": "2years","unit": "5"}}]}

步骤8)在hive中创建tmp1表

 hive>CREATE TABLE tmp1 (
      value ARRAY<struct<id:string,bookname:string,properties:struct<subscription:string,unit:string>>>   
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES ( 
    'mapping.value' = 'value'   
) 
STORED AS TEXTFILE;

步骤9)将数据从json加载到tmp1表

>LOAD DATA LOCAL INPATH '$HOME/books.json' INTO TABLE tmp1;

步骤10)创建一个tmp2表来对tmp1进行爆炸操作,这个中间步骤是将多级json结构分解为多行 注意:如果您的 JSON 结构简单且单层,请避免此步骤

hive>create table tmp2 as 
 SELECT *
 FROM tmp1
 LATERAL VIEW explode(value) itemTable AS items;

步骤 11) 创建 hive 表并从 tmp2 表加载值

hive>create table books as 
select value[0].id as id, value[0].bookname as name, value[0].properties.subscription as subscription, value[0].properties.unit as unit from tmp2;

步骤 12) 删除临时表

hive>drop table tmp1;
hive>drop table tmp2;

步骤13)测试Hive表

hive>select * from books;

output:

id 名称 订阅单位

1 B 1 年 3

2 B 2年5

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将复杂的Json数据导入到hive中 的相关文章

随机推荐

  • SwiftUI:如何以编程方式更改 rootview 控制器

    我试图在用户注销后将 rootview 控制器更改为不同的屏幕 if let window UIApplication shared windows first window rootViewController UIHostingCont
  • PostgreSQL:忽略左外自连接更新

    我要更新专栏leaf category with TRUE其中类别不是父类别 它作为一个选择语句工作 select c1 id c1 name c1 slug c1 level c2 parent id c2 name c2 slug c2
  • 从App World下载的应用程序是否共享项目?

    我的公司创建了多个 BlackBerry 应用程序 它们都使用一些共享的 Java 项目 最近 我们一直在追查一个错误 我们推测该错误可能是由使用其中一个项目的旧版本的应用程序引起的 我的问题是 从 App World 单独下载的两个应用程
  • 用于刷新访问令牌的 Google 电子表格应用程序脚本

    我正在使用以下 HTTP 请求从关联的 YouTube 频道检索数据 https www googleapis com youtube analytics v1 reports ids channel 3D 3D MY ASSOCIATED
  • 动态条件 - 过滤 Excel VBA

    我需要根据相同的标准进行过滤 但标准的值在我收到的数据中并不总是相同 因此它们需要是动态的 for eg 将 Crit1 调暗为字符串 暴击1 So that Selection AutoFilter 字段 4 Criteria1 crit
  • 浮点值作为字典键

    我正在开发一个用于分析微量滴定板的课程 这些样本在单独的文件中进行描述 并且条目用于有序字典 关键之一是 pH 值 通常以浮点数形式给出 例如6 8 我可以将其导入为十进制Decimal 6 8 为了避免浮动作为字典键 另一种解决方案是将点
  • 从 MP3 文件/ID3 标签获取专辑封面

    我正在尝试从 MP3 文件获取专辑封面 在这种情况下我使用AVAudioPlayer播放文件 这是代码我以为将获得专辑封面 MPMusicPlayerController controller MPMusicPlayerController
  • Laravel Socialite 2.0 Facebook 身份验证仅返回 ID 和名称

    我正在使用 Laravel 的 Socialite 包 版本 2 0 0 它在 google 和 github 上运行得很好 但是当我尝试使用 facebook 登录时 我得到了这个 ErrorException in FacebookPr
  • PHP Carbon 需要分钟数并转换为天数

    我正在尝试使用 Carbon 将分钟数转换为天数 minutes 1400 我想做如下的事情 当然 这是行不通的 Carbon gt minutes minutes gt days 我找不到这方面的例子 谢谢你的帮助 未测试 但快速浏览一下
  • 如何启用MySQL客户端自动重新连接MySQLdb?

    我遇到了 PHP 的方法 my bool reconnect 1 mysql options mysql MYSQL OPT RECONNECT reconnect 但 MySQLdb python mysql 就不那么幸运了 有人可以提供
  • 如何在webpack中使用child_process

    我试图在托管 Web 应用程序时在目录中运行命令行函数 但是当我尝试运行以下代码时 它会抛出 无法解析模块 child process var exec require child process exec 它与 Webpack 一起运行
  • ArrayList 与 LinkedList

    我正在关注一个上一篇文章对此说 对于链表 得到的是 O n 加法的时间复杂度为 O 1 删除是 O n Iterator remove 的复杂度为 O 1 对于数组列表 获取的时间复杂度为 O 1 add 的分摊时间复杂度为 O 1 但最坏
  • 以十六进制表示形式显示 u8 切片

    我需要转换 u8 到十六进制表示 例如 A9 45 FF 00 特质std fmt UpperHex没有为切片实现 所以我不能使用std fmt format 铁锈有serialize hex ToHex特征 它转换 u8 到十六进制字符串
  • dialyxir mix 任务创建 PLT 退出,没有错误或创建表

    我正在尝试使用 dialyxir 通过它提供的混合任务对我的项目运行透析器分析 我已将其添加到我的依赖项中并根据自述文件进行编译 当我运行mix dialyxir plt它没有报告任何错误 但退出时没有创建表 mix dialyzer pl
  • git如何管理目录

    I know git will not see am empty dir but can someone provide a reference to some documentation on how exactly it is impl
  • 将 GET 请求参数获取到 @ViewScoped bean

    我有一个 请求范围的 列表 用户可以从中选择 PQ 链接列表 当单击或以其他方式进入浏览器时 将显示每个 PQ 的主页 每个 PQ 的页面都是以下形式 http localhost 8080 projectname main jsf id
  • WebRTC视频会议(多对多)

    我即将使用 webRTC socket io node js 构建一个视频会议系统 所以我已经阅读了 Simon Pietro Romano 的这本书作为起点 与 webRTC 的实时通信 我已经读完了它 我要运行该系统通过 100 Mbp
  • 嵌入式 Lua - 流氓脚本超时(例如无限循环) - 有人举个例子吗?

    我已将 Lua 嵌入到 C 应用程序中 我需要能够杀死那些霸占资源的流氓 即写得很糟糕的脚本 我知道我无法满足导致脚本无限期运行的每种情况 所以现在我只关注简单的 Lua 方面 即脚本方面的问题 我也知道这个问题已经在这里被问过 以各种形式
  • 在 Android 设备上运行时卡在 Meteor 示例“todos”加载屏幕上

    Issue s 当我尝试在 Android 设备上运行 Meteor todos 示例时 它永远停留在加载屏幕上 从下面的屏幕截图中可以看出 显示了以下错误消息 Failed to load resource net ERR ADDRESS
  • 将复杂的Json数据导入到hive中

    需要一点勺子喂养 如何将复杂的 json 导入到 hive 中 Json 文件格式为 some headers dump item id item 1 item id item 2 Hive 具有以下给出的字段dump Json 文件大小目