hive默认是以tab为分隔符,分隔各个输出字段,如
hive> select get_json_object(json.value,'$.hour'),get_json_object(json.value,"$.channel") from json limit 10; Total MapReduce jobs = 1 Launching Job 1 out of 1 Number of reduce tasks is set to 0 since there's no reduce operator Starting Job = job_201304271626_0032, Tracking URL = http://linjianke:50030/jobdetails.jsp?jobid=job_201304271626_0032 Kill Command = /usr/lib/hadoop/bin/hadoop job -Dmapred.job.tracker=192.168.10.44:8021 -kill job_201304271626_0032 2013-05-15 10:07:11,102 Stage-1 map = 0%, reduce = 0% 2013-05-15 10:07:15,116 Stage-1 map = 100%, reduce = 0% 2013-05-15 10:07:17,125 Stage-1 map = 100%, reduce = 100% Ended Job = job_201304271626_0032 OK 2013-04-07 16 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8 2013-04-07 22 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8 2013-04-08 00 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8 2013-04-08 01 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8 2013-04-09 01 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8 2013-04-09 07 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8 2013-04-09 16 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8 2013-04-09 17 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8 2013-04-09 21 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8 2013-04-10 01 f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8 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;
输出为
{"aa":"2013-04-07 16","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"} {"aa":"2013-04-07 22","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"} {"aa":"2013-04-08 00","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"} {"aa":"2013-04-08 01","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"} {"aa":"2013-04-09 01","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"} {"aa":"2013-04-09 07","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"} {"aa":"2013-04-09 16","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"} {"aa":"2013-04-09 17","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"} {"aa":"2013-04-09 21","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"} {"aa":"2013-04-10 01","bb":"f32d98f8-8ac5-11e2-8a47-bc305bf4bcb8"}
python脚本:对python还不大熟悉,写的可能比较搓
#!/usr/bin/python #coding:utf8 import sys for line in sys.stdin: if len(line) == 0: #print 'end' break if line.count('\n') == len(line): #print 'continue' continue line=line.strip('\n') arr=line.split('\t') if len(arr) != len(sys.argv) - 1: print 'error' break for i in range(0,len(arr)): arr[i]='"%s":"%s"' % (sys.argv[i+1],arr[i]) content = ','.join(arr) print '{%s}' % content
相关推荐
3. **事件解析**:接着,使用`ConvertRecord`处理器将binlog事件转化为结构化的数据格式,例如JSON或CSV。这一步可能需要自定义的Schema和RecordReader/Writer来确保数据的正确解析。 4. **数据转换**:根据业务...
【Hive函数重要应用案例1】本章主要探讨在Hive中处理特殊数据格式的技巧,特别是...综上,本章将详细介绍如何在Hive中应对各种复杂的分隔符问题,以及如何利用不同函数和工具处理特殊数据格式,以满足实际业务需求。
- **Thrift CSV/JSON**:支持 CSV 和 JSON 格式的序列化/反序列化。 - **Execution**:执行 MapReduce 作业。 - **Parser**:解析 HiveQL 语句。 - **Planner**:规划 MapReduce 作业的执行计划。 - **Optimizer**:...
4. **JSON解析**:任务1描述了如何解析ods层的原始日志文件,将JSON字符串转化为结构化数据,这通常需要使用Spark的DataFrame API配合UDF(User Defined Functions)来完成。 5. **事件筛选与解析**:任务2和3涉及从...
- **驱动(Driver)**: 包括编译器、优化器和执行器,负责将HQL转化为执行计划。 - **接口**: CLI命令行接口、HWI Hive Web Interface、ThriftServer。 - **Hadoop集成**: 使用MapReduce进行计算,使用HDFS进行存储...
3. **数据集**:可能会有原始数据文件,以及经过预处理后的数据文件,这些数据可能是CSV、JSON、Parquet或其他格式。 4. **README文档**:通常会提供项目介绍、依赖项、如何运行项目、结果解释等关键信息。 5. **...
数据挖掘工程师是IT行业中一个关键的角色,他们负责从海量数据中发现有价值的信息,帮助企业做出决策。以下是关于数据挖掘...他们的工作不仅限于技术层面,还需要将数据分析结果转化为业务策略,推动企业的发展。**