hive输出格式转化,本例以json为例

2024-06-02 17:58

本文主要是介绍hive输出格式转化,本例以json为例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

hive默认是以tab为分隔符,分隔各个输出字段,如

 
  1. hive> select get_json_object(json.value,'$.hour'),get_json_object(json.value,"$.channel") from json limit 10;

  2. Total MapReduce jobs = 1

  3. Launching Job 1 out of 1

  4. Number of reduce tasks is set to 0 since there's no reduce operator

  5. Starting Job = job_201304271626_0032, Tracking URL = http://linjianke:50030/jobdetails.jsp?jobid=job_201304271626_0032

  6. Kill Command = /usr/lib/hadoop/bin/hadoop job -Dmapred.job.tracker=192.168.10.44:8021 -kill job_201304271626_0032

  7. 2013-05-15 10:07:11,102 Stage-1 map = 0%, reduce = 0%

  8. 2013-05-15 10:07:15,116 Stage-1 map = 100%, reduce = 0%

  9. 2013-05-15 10:07:17,125 Stage-1 map = 100%, reduce = 100%

  10. Ended Job = job_201304271626_0032

  11. OK

  12. 2013-04-07 16 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8

  13. 2013-04-07 22 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8

  14. 2013-04-08 00 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8

  15. 2013-04-08 01 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8

  16. 2013-04-09 01 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8

  17. 2013-04-09 07 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8

  18. 2013-04-09 16 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8

  19. 2013-04-09 17 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8

  20. 2013-04-09 21 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8

  21. 2013-04-10 01 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8

  22. Time taken: 9.531 seconds

 

因为业务需要,蒋输出转为json格式,可以用hive提供的transform函数

 

hive> select transform(get_json_object(json.value,'$.hour'),get_json_object(json.value,"$.channel")) using '/usr/bin/python transform.py aa bb' as (result string) from json limit 10;

 输出为

 
  1. {"aa":"2013-04-07 16","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"}

  2. {"aa":"2013-04-07 22","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"}

  3. {"aa":"2013-04-08 00","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"}

  4. {"aa":"2013-04-08 01","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"}

  5. {"aa":"2013-04-09 01","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"}

  6. {"aa":"2013-04-09 07","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"}

  7. {"aa":"2013-04-09 16","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"}

  8. {"aa":"2013-04-09 17","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"}

  9. {"aa":"2013-04-09 21","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"}

  10. {"aa":"2013-04-10 01","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"}

 python脚本:对python还不大熟悉,写的可能比较搓

 
  1.  
  2. #!/usr/bin/python

  3. #coding:utf8

  4. import sys

  5. for line in sys.stdin:

  6. if len(line) == 0:

  7. #print 'end'

  8. break

  9. if line.count('\n') == len(line):

  10. #print 'continue'

  11. continue

  12. line=line.strip('\n')

  13. arr=line.split('\t')

  14. if len(arr) != len(sys.argv) - 1:

  15. print 'error'

  16. break

  17. for i in range(0,len(arr)):

  18. arr[i]='"%s":"%s"' % (sys.argv[i+1],arr[i])

  19. content = ','.join(arr)

  20. print '{%s}' % content

这篇关于hive输出格式转化,本例以json为例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1024688

相关文章

usaco 1.2 Palindromic Squares(进制转化)

考察进制转化 注意一些细节就可以了 直接上代码: /*ID: who jayLANG: C++TASK: palsquare*/#include<stdio.h>int x[20],xlen,y[20],ylen,B;void change(int n){int m;m=n;xlen=0;while(m){x[++xlen]=m%B;m/=B;}m=n*n;ylen=0;whi

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

easyui同时验证账户格式和ajax是否存在

accountName: {validator: function (value, param) {if (!/^[a-zA-Z][a-zA-Z0-9_]{3,15}$/i.test(value)) {$.fn.validatebox.defaults.rules.accountName.message = '账户名称不合法(字母开头,允许4-16字节,允许字母数字下划线)';return fal

php中json_decode()和json_encode()

1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行编码 说明 mixed json_decode ( string $json [, bool $assoc ] ) 接受一个 JSON 格式的字符串并且把它转换为 PHP 变量 参数 json

[数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2757 标注数量(xml文件个数):2757 标注数量(txt文件个数):2757 标注类别数:4 标注类别名称:["Platelets","RBC","WBC","sickle cell"] 每个类别标注的框数:

如何将一个文件里不包含某个字符的行输出到另一个文件?

第一种: grep -v 'string' filename > newfilenamegrep -v 'string' filename >> newfilename 第二种: sed -n '/string/!'p filename > newfilenamesed -n '/string/!'p filename >> newfilename

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

一步一步将PlantUML类图导出为自定义格式的XMI文件

一步一步将PlantUML类图导出为自定义格式的XMI文件 说明: 首次发表日期:2024-09-08PlantUML官网: https://plantuml.com/zh/PlantUML命令行文档: https://plantuml.com/zh/command-line#6a26f548831e6a8cPlantUML XMI文档: https://plantuml.com/zh/xmi