2019年1月23日星期三

大数据之数据存取:从HDFS读excel文件到pandas dataframe

难点:pandas不能直接从hdfs读excel文件。
解决方案:先读excel文件内容到RDD,然后把RDD内容从cluster传回本地,最后调用pandas.read_excel()方法
步骤:
(1)设置pyspark环境
import os
import sys

spark_home = os.environ.get('SPARK_HOME', None)
if not spark_home:
raise ValueError('SPARK_HOME environment variable is not set')

sys.path.insert(0, os.path.join(spark_home, 'python'))
# sys.path.insert(0, os.path.join(spark_home, 'python/lib/py4j-0.10.7-src.zip'))

(2)创建spark context
from pyspark import SparkConf, SparkContext
conf = SparkConf().setAppName('Read Excel File on HDFS to Pandas Dataframe')
sc = SparkContext(conf=conf)

(3)读excel文件内容到RDD
rdd = sc.binaryFiles("/HomeProject/my-demo/demo.xlsx")

(4)把RDD内容从cluster传回本地
arr = rdd.collect()

(4)调用pandas.read_excel()方法读文件内容到pandas dataframe
import io
import pandas as pd
df = pd.read_excel(io.BytesIO(arr[0][1]), header = 0)
df.head(5)

没有评论:

发表评论