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

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

我有一个spark数据框(在r中有“sparkyr”包),其中包含来自3个数据源(新闻、博客和twitter)的几个单词。我试着用 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:nul的csv),似乎:
错误消息指出您已嵌入nul char…:\0表示ascii字节==0,这在r字符串中是禁止的(在内部,它表示字符串的结尾)。
有些人已经问过类似的问题(收集时“在字符串中嵌入nul”),但他们没有得到明确的答案。
我怎样才能摆脱字符串中的这个“nul”?dplyr能帮我吗?在这个问题上有什么作用吗?
我正在尝试收集这个sparkDataframe到r的内存中,最终将其导出为csv或xlsx文件以供进一步分析。
谢谢!

cyvaqqii

cyvaqqii1#

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

word_count %>%
replace(word, "\0","") %>%
sdf_collect()

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

相关问题