尝试用Blaze和我本地的Spark实例做一些相当简单的事情。将带有blaze的csv文件加载到()中,然后通过()使用blaze的
Python 3.4
Spark 1.4.0
Blaze 0.8.0csv (simple.csv)
id,car
1,Mustang
2,Malibu
3,Mustang
4,Malibu
5,Murano代码
mport blaze as bz
rdd = bz.into(sc,"simple.csv")
simple = bz.Data(rdd)
simple.count() #gives me 5 so far so good
bz.by(simple.car, count=simple.id.count()) #throws an error
AttributeError: 'InteractiveSymbol' object has no attribute 'car'你知道这是怎么回事吗?
附注;这是可行的
simple_csv = bz.Data("simple.csv")
bz.by(simple_csv.car, count=simple_csv.id.count())
car count
0 Malibu 2
1 Murano 1
2 Mustang 2这个也是如此。
simple_csv.car.count_values()
car count
0 Malibu 2
2 Mustang 2
1 Murano 1应该是我把它“加载”到Spark中的方式,对吧?
发布于 2016-01-25 08:38:23
您将希望使用SQLContext创建Spark DataFrame (以前称为SchemaRDD),而不是使用SparkContext创建“原始”RDD。为了使by操作成功,RDD没有命名列。这就是为什么InteractiveSymbol没有car属性,它在创建RDD的过程中被剥离了。在Jupyter代码单元格中执行以下代码:
import pyspark
from pyspark.sql import SQLContext
sc = pyspark.SparkContext()
sqlContext = SQLContext(sc)
from odo import odo
simple = odo('simple.csv', sqlContext)
simple.count()将生成一个pyspark.sql.dataframe.DataFrame对象,并在Spark驱动程序上执行一个程序来计算行数:
>>> 5此时,您应该能够像以前那样计算group-by:
import blaze as bz
bz.by(simple.car, count=simple.id.count())但。Blaze有一个问题,至少对我来说,到今天为止,同时使用Spark1.6和Spark 1.4.1运行Blaze 0.9.0。很可能,这与您最初遇到的问题不同,但它阻止了我达成一个有效的解决方案。我试着放弃Jupyter,直接在pyspark会话中运行。要自己执行此操作,可以省略上面的几行代码,因为pyspark会自动创建sc和sqlContext
$ pyspark
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/__ / .__/\_,_/_/ /_/\_\ version 1.4.1
/_/
Using Python version 2.7.11 (default, Dec 6 2015 18:57:58)
SparkContext available as sc, HiveContext available as sqlContext.
from odo import odo
simple = odo('simple.csv', sqlContext)
import blaze as bz
bz.by(simple.car, count=simple.id.count())这会产生一个错误。即使只是试图像这样获得simple的交互式视图也会产生错误:
simple无论如何,在Github上的Blaze项目中似乎有一些与Spark 1.6升级支持相关的活动,所以希望他们能在那时修复这个问题。
https://stackoverflow.com/questions/30897932
复制相似问题