HDFS日志json转存成parquet方案
2017-08-15 16:01
1416 查看
收集的业务数据为json格式,准备利用parquet 格式重新存储到hive表,以节约空间并方便后续通过spark 或 hive 进行分析查询。
(示例代码是用python)
具体步骤是:
1. 用spark读取json数据后,得到一个dataframe
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表
5.这样建立完以后,hive还需要执行一步数据加载,才能查到数据
load 和 alter 的主要区别是:
load 会创建分区目录,并移动数据到分区下,alter 的方式不会创建分区目录,也不会移动数据。
个人场景alter 方式添加分区更适合。
把json 存储为parquet,不但可以节省50%左右的存储空间,更方便后续工作中的数据查询,并且查询效率比文本方式更高。
如果有更好的方式,欢迎各位大神留言讨论。
(示例代码是用python)
具体步骤是:
1. 用spark读取json数据后,得到一个dataframe
path = '/xx/xxx/xxx.json' df = sqlContext.read.json(path)
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';
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';
load 和 alter 的主要区别是:
load 会创建分区目录,并移动数据到分区下,alter 的方式不会创建分区目录,也不会移动数据。
个人场景alter 方式添加分区更适合。
把json 存储为parquet,不但可以节省50%左右的存储空间,更方便后续工作中的数据查询,并且查询效率比文本方式更高。
如果有更好的方式,欢迎各位大神留言讨论。
相关文章推荐
- HDFS日志json转存成parquet方案
- 改造CDH HDFS服务NameNode,DataNode进程的日志输出格式为Json
- 业务系统JSON日志通过python处理并导入Mysql方案
- 业务系统JSON日志通过python处理并导入Hive方案
- 上传文件返回的json数据会被提示下载问题解决方案
- 本地日志数据实时接入到hadoop集群的数据接入方案
- logstash+grok+json+elasticsearch解析复杂日志数据(二)
- jquery.getJSON跨域方案实现原理
- SQLServer2005删除log文件和清空日志的方案
- 用hive+hdfs+sqoop分析日志的步骤
- 存储过程给指定表绑定触发器sql里拼json作存储日志
- Android 优质精准的用户行为和日志打捞方案
- 上传文件返回的json数据会被提示下载问题解决方案
- Haproxy Json日志格式配置
- SQLServer2005删除log文件和清空日志的方案
- Docker 如何支持多种日志方案?- 每天5分钟玩转 Docker 容器技术(88)
- 002中小规模电子商务网站用户行为日志收集方案
- Scribe+HDFS日志收集系统安装方法
- 使用webdav从windows上传日志到hdfs
- json包含单双引号问题解决方案