【发布时间】:2017-12-13 16:07:23
【问题描述】:
我是 pyspark 的新手。我想使用 matplotlib 绘制结果,但不确定要使用哪个函数。我搜索了一种将sql结果转换为pandas然后使用plot的方法。
【问题讨论】:
-
嗨团队我找到了解决方案。我将 sql 数据框转换为 pandas 数据框,然后我能够绘制图表。下面是示例代码。
标签: python pandas matplotlib pyspark-sql
我是 pyspark 的新手。我想使用 matplotlib 绘制结果,但不确定要使用哪个函数。我搜索了一种将sql结果转换为pandas然后使用plot的方法。
【问题讨论】:
标签: python pandas matplotlib pyspark-sql
我已经找到了解决方案。我将 sql 数据框转换为 pandas 数据框,然后我能够绘制图表。下面是示例代码。来自
pyspark.sql import Row
from pyspark.sql import HiveContext
import pyspark
from IPython.display import display
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
sc = pyspark.SparkContext()
sqlContext = HiveContext(sc)
test_list = [(1, 'hasan'),(2, 'nana'),(3, 'dad'),(4, 'mon')]
rdd = sc.parallelize(test_list)
people = rdd.map(lambda x: Row(id=int(x[0]), name=x[1]))
schemaPeople = sqlContext.createDataFrame(people)
# Register it as a temp table
sqlContext.registerDataFrameAsTable(schemaPeople, "test_table")
df1=sqlContext.sql("Select * from test_table")
pdf1=df1.toPandas()
pdf1.plot(kind='barh',x='name',y='id',colormap='winter_r')
【讨论】:
对于小数据,您可以在 pyspark DataFrame 上使用 .select() 和 .collect()。 collect 将给出一个pyspark.sql.types.Row 的python 列表,可以对其进行索引。从那里你可以在没有 Pandas 的情况下使用 matplotlib 进行绘图,但是使用带有 df.toPandas() 的 Pandas 数据框可能更容易。
【讨论】: