用.csv格式的HDFS文件创建熊猫数据框
问题描述:
我试图通过从hadoop集群获取.csv数据并将其放入Pandas DataFrame来创建Spark工作流。我能够从HDFS中提取数据并将其放入RDD中,但无法将其处理到Pandas Dataframe中。 以下是我的代码:用.csv格式的HDFS文件创建熊猫数据框
import pandas as pd
import numpy as nm
A=sc.textFile("hdfs://localhost:9000/sales_ord_univ.csv") # this creates the RDD
B=pd.DataFrame(A) # this gives me the following error:pandas.core.common.PandasError: DataFrame constructor not properly called!
我敢肯定,这个错误是这样的,由于RDD是一个大单名单, 因此,我试图通过拆分数据“;”(即每新行是不同的字符串) 但这似乎也没有帮助。
我的总体目标是使用Pandas将CSV更改为JSON并输出到MongoDB。我已经使用DictReader,PysparkSQL完成了这个项目,但是想要检查是否可以使用Pandas。
任何帮助,将不胜感激 谢谢!
答
我建议将csv加载到Spark DataFrame中并将其转换为Pandas DataFrame。
csvDf = sqlContext.read.format("csv").option("header", "true").option("inferschema", "true").option("mode", "DROPMALFORMED").load("hdfs://localhost:9000/sales_ord_univ.csv")
B = csvDf.toPandas()
如果仍然使用一个Spark版本< 2.0,则必须使用read.format("com.databricks.spark.csv")
和包括com.databricks.spark.csv包(例如与--packages
参数使用pyspark壳时)。
答
你需要hdfs (2.0.16)
from hdfs import Config
zzodClient = Config().get_client('zzod') #refer to the docs to set up config
with zzodClient.read(q2Path) as r2Reader:
r2 = pandas.read_csv(r2Reader)