【问题标题】:Making RDD operations on sqlContext对 sqlContext 进行 RDD 操作
【发布时间】:2017-10-07 17:01:51
【问题描述】:

我正在编写 apache spark 的教程,并使用 Cassandra 数据库、Spark2.0 和 Python

我正在尝试使用本教程对 sql 查询执行 RDD 操作, https://spark.apache.org/docs/2.0.0-preview/sql-programming-guide.html 上面写着#SQL查询的结果是RDD,支持所有正常的RDD操作。

我目前有这行代码说

sqlContext = SQLContext(sc)
results = sqlContext.sql("SELECT word FROM tweets where word like '%@%'").show(20, False)
    df = sqlContext.read\
    .format("org.apache.spark.sql.cassandra")\
    .options(table="wordcount", keyspace= "demo")\
    .load()
df.select("word")

df.createOrReplaceTempView("tweets")

usernames = results.map(lambda p: "User: " + p.word)
for name in usernames.collect():
    print(name)

AttributeError: 'NoneType' 对象没有属性 'map' 如果变量 results 是 sql Query 的结果,为什么会出现此错误?谁能给我解释一下。

一切正常,表格打印,只有当我得到错误时 尝试做一个 RDD 操作。 请记住 sc 是现有的 spark 上下文

【问题讨论】:

    标签: scala apache-spark cassandra pyspark rdd


    【解决方案1】:

    这是因为show() 只打印内容。

    用途:

    results = sqlContext.sql("SELECT word FROM tweets where word like '%@%'")
    result.show(20, False)
    

    【讨论】:

    • 感谢您的快速回复,我取出了 result.show,现在我得到一个 'DataFrame' object has no attribute 'map' 错误。
    • resultsDF = results.rdd.map(lambda p: "User: " + p.word) 工作得很好。谢谢。
    猜你喜欢
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    相关资源
    最近更新 更多