用Python读hdfs集群parquet格式文件

首页 / 新闻资讯 / 正文

使用模块

  • Python2.7

  • subprocess

  • io.BytesIO

  • parquet-python 1.3.1

其中parquet包不是python内置,需要用pip 安装

整体流程

  1. 使用subprocess读hdfs中的parquet文件

  2. 将字节流写入io.BytesIO对象中(要做这一步是因为parquet包目前只支持文件对象解析)

  3. 使用parquet包的接口解析上一步得到的io对象

代码

import parquet import subprocess from io import BytesIO  url='文件路径' popen_args = ['hdfs', 'dfs', '-text', url] p = subprocess.Popen(popen_args, stdout=subprocess.PIPE) f = BytesIO() for line in p.stdout:     f.write(line) p.wait() if p.returncode == 0: 	for row in parquet.reader(f): 		print row 

parquet包还提供一个DictReader的接口,使用也很简单

参考资料

parquet-python