【问题标题】:dplyr unnest_tokens not workingdplyr unnest_tokens 不工作
【发布时间】:2018-02-01 15:49:12
【问题描述】:

我正在从

加载 5 核数据集之一

http://jmcauley.ucsd.edu/data/amazon/

使用

library(sparklyr)
library(dplyr)

config <- spark_config()
config$`sparklyr.shell.driver-memory` <- "2G"
sc = spark_connect(master = "local",config = config)
df=spark_read_json(sc = sc, name = "videos", path = "Path/to/reviews_Office_Products_5.json")

其中一个变量是一列文本评论,同样:

select(df,reviewText)

# 来源:惰性查询 [?? x 1]

# 数据库:spark_connection 评论文本

1 我大约在 1984 年左右购买了我的第一台 HP12C,它一直忠实地为我服务到 2002 年

2“为什么这个迟来的评论?我觉得非常有义务分享我对这位老工人的看法

3 我有一台已经运行了 20 多年的 HP 48GX 和一台我使用的 HP 11

4 我最近开始做更多的金融工作,并开始寻找良好的时间价值-

5 对于简单的计算和贴现现金流,这个仍然是最好的。我用过

6 虽然我没有 MBA 学位,但很难相信我学会了如何使用计算器

7 自从 HP 12C 大约 20 年前首次面世以来,我就一直使用它们。我'

8 给我的老板买了这个,因为他丢了。他喜欢这个计算器,不会是

9 这是一款设计精良、简单的计算器,可处理典型的四函数数学运算。拉

10 我喜欢这个计算器,大数字和计算非常好,易于使用,让我的

# ... 更多行

我想将评论拆分为标记,每行包含一个单词,但事实证明这很困难。当我尝试使用函数 unnest_tokens 时,我收到以下错误消息:

library(stringr)
library(tidytext) 

Word_by_Word <- df %>% unnest_tokens(word, reviewText)

unnest_tokens_.default(., word, reviewText) 中的错误: unnest_tokens 期望输入的所有列都是原子向量(不是列表)

发生了什么?如何在不使用命令“pull”并将数据强制转换为请求格式的情况下解决此问题?我无法按照建议提取数据 Extract a dplyr tbl column as a vector 或将数据转换为 tibble 格式,顺便说一句,因为如果数据库太大而我做了任何这些,那么即使在增加 2G 限制并在具有大量内存(这是使用 dplyr 的漏洞)。

【问题讨论】:

    标签: r dplyr sparklyr tidytext


    【解决方案1】:

    您似乎已经在内存中拥有数据帧。如果是这样,那么错误代码为您指明了方向。 reviewText 中的每个条目都是 listunnest_tokens() 期望它们属于 vector 类。

    尝试使用unlist() 来转换reviewText 字段,无论是就地还是通过mutate()

    【讨论】:

    • 当我尝试使用df %&gt;% mutate(rt=unlist(reviewText)) 时,我收到一条错误消息,指出该函数不存在。能否请您更具体地说明如何使用 unlist?
    • unlist() 是一个基本 R 函数,所以响应 mutate() 的错误是?
    • 错误开始是这样的:Error: org.apache.spark.sql.AnalysisException: Undefined function: 'UNLIST'. This function is neither a registered temporary function nor a permanent function registered in the database 'default'.; 我认为这个错误可能是因为 unlist 不是 mutate 的有效函数。
    • 好的,有道理。 df 对象实际上不是内存中的数据帧,而是spark_tbl 对象?你能用sdf_mutate()代替mutate()吗?
    • 是的,df 是 spark_tbl。运行df %&gt;% sdf_mutate(rt=unlist(reviewText))后出现以下错误Error in UseMethod("sdf_register") : no applicable method for 'sdf_register' applied to an object of class "character"
    猜你喜欢
    • 2018-12-07
    • 2019-09-09
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 2017-01-06
    • 1970-01-01
    相关资源
    最近更新 更多