HDFS日志json转存成parquet方案
来源:互联网 发布:中越战争 知乎 编辑:程序博客网 时间:2024/06/10 04:54
转:http://blog.csdn.net/jobschen/article/details/77196092
收集的业务数据为json格式,准备利用parquet 格式重新存储到hive表,以节约空间并方便后续通过spark 或 hive 进行分析查询。
(示例代码是用python)
具体步骤是:
1. 用spark读取json数据后,得到一个dataframe
path = '/xx/xxx/xxx.json'df = sqlContext.read.json(path)
- 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';
- 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';
- 1
- 2
- 3
- 4
- 5
load 和 alter 的主要区别是:
load 会创建分区目录,并移动数据到分区下,alter 的方式不会创建分区目录,也不会移动数据。
个人场景alter 方式添加分区更适合。
把json 存储为parquet,不但可以节省50%左右的存储空间,更方便后续工作中的数据查询,并且查询效率比文本方式更高。
如果有更好的方式,欢迎各位大神留言讨论。
阅读全文
0 0
- HDFS日志json转存成parquet方案
- HDFS日志json转存成parquet方案
- nginx 日志 转存分隔
- spark读取json,parquet文件
- 转存
- Parquet
- Parquet
- Parquet
- 转存Druid监控记录到日志文件
- 转存Druid监控记录到日志文件
- 转存Druid监控记录到日志文件
- rsyslogd、syslog远程传输、日志存储、转存
- parquet.hadoop 狂打日志,不受控制
- 利用 sparksession读取Parquet,Json格式文件
- 基于spark2.0整合spark-sql + mysql + parquet + HDFS
- spark parquet 从hdfs 上读 和写
- spark parquet 从hdfs 上读 和写 scala 版本
- spark 批量读取HDFS(hive分区)parquet文件
- 浅析Java中的final关键字
- 编程语言的合适性
- android fragment和activity的区别
- FLASH和EEPROM的最大区别
- 用不可逆算法MD5进行加密后,如何进行登录验证
- HDFS日志json转存成parquet方案
- yum源的配置,共享和第三方软件库的搭建
- [PHP] 对象的浅复制与深复制-----“=” 与 “clone”
- jmap查看内存使用情况与生成heapdump
- 集合结构图
- openfire插件最佳实践(四)离线消息推送ios服务器
- iOS swift HTTPS 9813错误解决记录
- Codeforces 626F Group Projects 动态规划
- [bzoj1626][Usaco2007 Dec][最小生成树]修建道路