kra*_*ter 12 dataframe pandas apache-spark apache-spark-sql pyspark
我可以将Pandas DataFrame转换为RDD吗?
if isinstance(data2, pd.DataFrame):
print 'is Dataframe'
else:
print 'is NOT Dataframe'
Run Code Online (Sandbox Code Playgroud)
是DataFrame
这是尝试使用.rdd时的输出
dataRDD = data2.rdd
print dataRDD
Run Code Online (Sandbox Code Playgroud)
AttributeError Traceback (most recent call last)
<ipython-input-56-7a9188b07317> in <module>()
----> 1 dataRDD = data2.rdd
2 print dataRDD
/usr/lib64/python2.7/site-packages/pandas/core/generic.pyc in __getattr__(self, name)
2148 return self[name]
2149 raise AttributeError("'%s' object has no attribute '%s'" %
-> 2150 (type(self).__name__, name))
2151
2152 def __setattr__(self, name, value):
AttributeError: 'DataFrame' object has no attribute 'rdd'
Run Code Online (Sandbox Code Playgroud)
我想使用Pandas Dataframe而不是sqlContext来构建,因为我不确定Pandas DF中的所有函数是否都可以在Spark中使用.如果这是不可能的,是否有人可以提供使用Spark DF的示例
zer*_*323 17
我可以将Pandas Dataframe转换为RDD吗?
嗯,是的,你可以做到.熊猫数据框架
pdDF = pd.DataFrame([("foo", 1), ("bar", 2)], columns=("k", "v"))
print pdDF
## k v
## 0 foo 1
## 1 bar 2
Run Code Online (Sandbox Code Playgroud)
可以转换为Spark数据框
spDF = sqlContext.createDataFrame(pdDF)
spDF.show()
## +---+-+
## | k|v|
## +---+-+
## |foo|1|
## |bar|2|
## +---+-+
Run Code Online (Sandbox Code Playgroud)
之后,您可以轻松访问底层RDD
spDF.rdd.first()
## Row(k=u'foo', v=1)
Run Code Online (Sandbox Code Playgroud)
不过,我认为你在这里有一个错误的想法.Pandas Data Frame是一种本地数据结构.它在驱动程序上本地存储和处理.没有数据分发或并行处理,它不使用RDD(因此没有rdd属性).与Spark DataFrame不同,它提供随机访问功能.
Spark DataFrame是在幕后使用RDD的分布式数据结构.可以使用原始SQL(sqlContext.sql)或SQL(如API(df.where(col("foo") == "bar").groupBy(col("bar")).agg(sum(col("foobar")))))访问它.没有随机访问,它是不可变的(没有相当于Pandas inplace).每次转换都会返回新的DataFrame.
如果这是不可能的,是否有人可以提供使用Spark DF的示例
并不是的.对于SO而言,这是一个广泛的主题.Spark有一个非常好的文档,Databricks提供了一些额外的资源.对于初学者,你检查这些:
| 归档时间: |
|
| 查看次数: |
15710 次 |
| 最近记录: |