错误:在sparkler中收集sparklyr中的字数时出现“embedded nul in string”

cunj1qz1  于 2021-07-14  发布在  Spark
关注(0)|答案(1)|浏览(737)

我有一个spark数据框(在r中有“sparkyr”包),其中包含来自3个数据源(新闻、博客和twitter)的几个单词。我试着用 collect() 把spark的数据复制到r的内存里。
在使用sparklyr的几个文本挖掘函数计算单词之后,我得到了以下结果:

  1. > word_count
  2. # Source: spark<?> [?? x 3]
  3. # Groups: dataset
  4. # Ordered by: desc(n)
  5. dataset word n
  6. <chr> <chr> <int>
  7. 1 news said 250414
  8. 2 blogs one 127526
  9. 3 twitter like 122384
  10. 4 twitter get 112510
  11. 5 twitter love 106122
  12. 6 twitter good 100844
  13. 7 blogs like 100105
  14. 8 twitter day 91559
  15. 9 blogs time 90609
  16. 10 twitter thanks 89513
  17. # ... with more rows

如果我想用 collect() ,我得到以下错误:

  1. > full_word_count <- collect(word_count)
  2. Error in RecordBatch__to_dataframe(x, use_threads = option_use_threads()) :
  3. embedded nul in string: '\0\0ul437'

在研究了一点之后(初学者尝试读取字符串中嵌入r:nul的csv),似乎:
错误消息指出您已嵌入nul char…:\0表示ascii字节==0,这在r字符串中是禁止的(在内部,它表示字符串的结尾)。
有些人已经问过类似的问题(收集时“在字符串中嵌入nul”),但他们没有得到明确的答案。
我怎样才能摆脱字符串中的这个“nul”?dplyr能帮我吗?在这个问题上有什么作用吗?
我正在尝试收集这个sparkDataframe到r的内存中,最终将其导出为csv或xlsx文件以供进一步分析。
谢谢!

cyvaqqii

cyvaqqii1#

r对nuls有点特别。
您可以在收集之前替换Spark侧的NUL(“\0”)。冒犯的字符串很可能在您的 word 列:

  1. word_count %>%
  2. replace(word, "\0","") %>%
  3. sdf_collect()

或者,您可以进入与文本挖掘相关联的编码/解码地狱:p

相关问题