首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Blaze访问Spark时出错

使用Blaze访问Spark时出错
EN

Stack Overflow用户
提问于 2015-06-18 01:03:15
回答 1查看 423关注 0票数 0

尝试用Blaze和我本地的Spark实例做一些相当简单的事情。将带有blaze的csv文件加载到()中,然后通过()使用blaze的

代码语言:javascript
复制
Python 3.4
Spark 1.4.0
Blaze 0.8.0

csv (simple.csv)

代码语言:javascript
复制
   id,car
    1,Mustang
    2,Malibu
    3,Mustang
    4,Malibu
    5,Murano

代码

代码语言:javascript
复制
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'

你知道这是怎么回事吗?

附注;这是可行的

代码语言:javascript
复制
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

这个也是如此。

代码语言:javascript
复制
simple_csv.car.count_values()
    car count
0   Malibu  2
2   Mustang 2
1   Murano  1

应该是我把它“加载”到Spark中的方式,对吧?

EN

回答 1

Stack Overflow用户

发布于 2016-01-25 08:38:23

您将希望使用SQLContext创建Spark DataFrame (以前称为SchemaRDD),而不是使用SparkContext创建“原始”RDD。为了使by操作成功,RDD没有命名列。这就是为什么InteractiveSymbol没有car属性,它在创建RDD的过程中被剥离了。在Jupyter代码单元格中执行以下代码:

代码语言:javascript
复制
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驱动程序上执行一个程序来计算行数:

代码语言:javascript
复制
>>> 5

此时,您应该能够像以前那样计算group-by:

代码语言:javascript
复制
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会自动创建scsqlContext

代码语言:javascript
复制
$ 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的交互式视图也会产生错误:

代码语言:javascript
复制
simple

无论如何,在Github上的Blaze项目中似乎有一些与Spark 1.6升级支持相关的活动,所以希望他们能在那时修复这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30897932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档