r - 错误:在 R 中的 sparklyr 中收集字数时出现“在字符串中嵌入 nul”
问题描述
我有一个 Spark 数据框(在 R 中带有“sparklyr”包),其中包含来自 3 个数据源(新闻、博客和推特)的几个单词的字数。我正在尝试使用collect()
将数据从 Spark 复制到 R 的内存。
在使用 sparklyr 计算具有用于文本挖掘的多个功能的单词后,我有以下内容:
> word_count
# Source: spark<?> [?? x 3]
# Groups: dataset
# Ordered by: desc(n)
dataset word n
<chr> <chr> <int>
1 news said 250414
2 blogs one 127526
3 twitter like 122384
4 twitter get 112510
5 twitter love 106122
6 twitter good 100844
7 blogs like 100105
8 twitter day 91559
9 blogs time 90609
10 twitter thanks 89513
# ... with more rows
现在,如果我尝试使用collect()
,我会收到以下错误:
> full_word_count <- collect(word_count)
Error in RecordBatch__to_dataframe(x, use_threads = option_use_threads()) :
embedded nul in string: '\0\0ul437'
经过一番研究(初学者尝试使用 R: Embedded nul in string 读取 CSV),似乎:
错误消息指出您嵌入了一个 nul 字符...:\0 表示 ASCII 字节 == 0,这在 R 字符串中是禁止的(在内部,它表示字符串的结尾)。
有些人已经问过类似的问题(Sparklyr “在收集时将 nul 嵌入字符串”),但他们没有得到明确的答案。
我怎样才能摆脱字符串中的这个“nul”?dplyr 可以帮我解决这个问题吗?sparklyr 中是否有任何功能可以解决此问题?
我正在尝试将此 Spark 数据帧收集到 R 的内部存储器,以最终将其导出为 CSV 或 XLSX 文件以供进一步分析。
谢谢!
解决方案
R 对 nuls 有点特别。
您可以在收集之前替换 Spark 端的 nuls ("\0")。有问题的字符串很可能在您的word
列中:
word_count %>%
replace(word, "\0","") %>%
sdf_collect()
或者,您可以进入与文本挖掘相关的编码/解码地狱:P
推荐阅读
- sas - 将 SAS7BCAT 转换为 DATASET
- python - 在 Treeview 中连续更改颜色
- applescript - AppleScript 将拖动的文档传递给另一个应用程序
- r - 直接在 install.packages("sparklyr") 下使用 R 的区别
- ruby-on-rails - Rails 5 - 有没有办法将 if 语句转换为控制器逻辑?
- .net - GetCommTimeouts returns error 87 for network printer
- python - 如何使用python将新数据附加到pickle文件
- apache-nifi - Nifi:为什么“通知”不重置计数器,为什么“等待”计数不正确?
- javascript - 我怎样才能使这个 JSON.stringify 正常工作
- kubernetes - 如果我在不同的终端会话中与不同的 kubernetes 集群交互而不必一直切换上下文,该怎么办?