HDFS日志json转存成parquet方案
2017-10-30 11:49
344 查看
转:http://blog.csdn.net/jobschen/article/details/77196092
收集的业务数据为json格式,准备利用parquet 格式重新存储到hive表,以节约空间并方便后续通过spark 或 hive 进行分析查询。
(示例代码是用python)
具体步骤是:
1. 用spark读取json数据后,得到一个dataframe
2
2. dataframe 经过filter 、select 等操作再以parquet格式写入hdfs指定路径
df = df.filter(‘xxx’).select(‘xxx’)
3. 目录是按天分区,类似 /parquet/xxxxxx/dt=2017-06-06 这样
df.write.parquet(“/parquet/xxxxxx/dt=2017-06-06”,”overwrite”)
4. 建立对应hive表
2
3
4
5
6
7
8
9
10
5.这样建立完以后,hive还需要执行一步数据加载,才能查到数据
2
3
4
5
load 和 alter 的主要区别是:
load 会创建分区目录,并移动数据到分区下,alter 的方式不会创建分区目录,也不会移动数据。
个人场景alter 方式添加分区更适合。
把json 存储为parquet,不但可以节省50%左右的存储空间,更方便后续工作中的数据查询,并且查询效率比文本方式更高。
如果有更好的方式,欢迎各位大神留言讨论。
收集的业务数据为json格式,准备利用parquet 格式重新存储到hive表,以节约空间并方便后续通过spark 或 hive 进行分析查询。
(示例代码是用python)
具体步骤是:
1. 用spark读取json数据后,得到一个dataframe
path = '/xx/xxx/xxx.json' df = sqlContext.read.json(path)[/code]1
2
2. dataframe 经过filter 、select 等操作再以parquet格式写入hdfs指定路径
df = df.filter(‘xxx’).select(‘xxx’)
3. 目录是按天分区,类似 /parquet/xxxxxx/dt=2017-06-06 这样
df.write.parquet(“/parquet/xxxxxx/dt=2017-06-06”,”overwrite”)
4. 建立对应hive表
CREATE TABLE xxxxxx( `xx` string, `xxx` bigint, `xxxxx` string ... ... ... ) partitioned by (dt string ) STORED as PARQUET LOCATION '/parquet/xxxxxx';[/code]1
2
3
4
5
6
7
8
9
10
5.这样建立完以后,hive还需要执行一步数据加载,才能查到数据
load data inpath '/parquet/xxxxxx/dt=2017-06-06' into table xxxxxx partition(dt='2017-06-06') 或者 alter table xxxxxx add partition(dt='2017-06-06') location '/parquet/xxxxxx/dt=2017-06-06';[/code]1
2
3
4
5
load 和 alter 的主要区别是:
load 会创建分区目录,并移动数据到分区下,alter 的方式不会创建分区目录,也不会移动数据。
个人场景alter 方式添加分区更适合。
把json 存储为parquet,不但可以节省50%左右的存储空间,更方便后续工作中的数据查询,并且查询效率比文本方式更高。
如果有更好的方式,欢迎各位大神留言讨论。
相关文章推荐
- HDFS日志json转存成parquet方案
- 业务系统JSON日志通过python处理并导入Mysql方案
- 业务系统JSON日志通过python处理并导入Hive方案
- 改造CDH HDFS服务NameNode,DataNode进程的日志输出格式为Json
- 日志数据文件Json字段数据入库处理
- 使用webdav从windows上传日志到hdfs
- avatar hadoop 安装流程、hadoop/hdfs热备份方案
- 修改CDH进程NN、DN日志输出为JSON格式
- 使用Flume向HDFS持久化数据(日志)
- HDFS HA方案
- flume学习(二):flume将log4j日志数据写入到hdfs
- Flume 收集Nginx日志到Hdfs Tail-to-hdfs sink
- 基于淘宝Tengine和Scribe的WEB日志收集方案
- spring mvc 输出 json 异常日志、异常国际化处理
- 来自阿里的 json 解析方案 fastjson
- [工会网站建设方案-日志]第一阶段 策划:收集、整理、分析
- flume + kafka + sparkStreaming + HDFS 构建实时日志分析系统
- logback 记录json日志
- hdfs数据压缩方案
- Elasticsearch、Fluentd与Kibana:开源的日志搜索与可视化方案