用Python读hdfs集群parquet格式文件

2022年12月29日12:27:20

使用模块

  • 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

  • 作者:luSpet
  • 原文链接:https://blog.csdn.net/IuSpet/article/details/107302060
    更新时间:2022年12月29日12:27:20 ,共 489 字。