我的问题与此处的问题相似,但我在实现答案时遇到了问题,我无法在该线程中发表评论。
所以,我有一个包含嵌套数据的大 CSV 文件,其中包含由空格分隔的 2 列(比如第一列是 Y,第二列是 X)。X 列本身也是一个逗号分隔值。
21.66 2.643227,1.2698358,2.6338573,1.8812188,3.8708665,...
35.15 3.422151,-0.59515584,2.4994135,-0.19701914,4.0771823,...
15.22 2.8302398,1.9080592,-0.68780196,3.1878228,4.6600842,...
...
我想使用sparklyr
.
到目前为止,这就是我一直在做的事情:
用于
spark_read_csv
将所有 CSV 内容导入 Spark 数据表df = spark_read_csv(sc, path = "path", name = "simData", delimiter = " ", header = "false", infer_schema = "false")
结果是一个
simData
以 2 列命名的 Spark 表:C0
和C1
用于
dplyr
选择第一列和第二列,然后将它们分别注册为名为 Y 和 X 的新表simY <- df %>% select(C0) %>% sdf_register("simY")
simX <- df %>% select(C1) %>% sdf_register("simX")
拆分
simX
使用ft_regex_tokenizer
函数中的值,关于这里写的答案。ft_regex_tokenizer(input_DF, input.col = "COL", output.col = "ResultCols", pattern = '\\###')
但是当我尝试head
使用它时dplyr
:
Source: query [6 x 1]
Database: spark connection master=yarn-client app=sparklyr local=FALSE
Result
<list>
1 <list [789]>
2 <list [789]>
3 <list [789]>
4 <list [789]>
5 <list [789]>
6 <list [789]>
我想把它变成一个新的 Spark 表并将类型转换为双精度。有没有办法做到这一点?我已经考虑collect
将数据转换为 R(使用dplyr
),转换为矩阵,然后strsplit
为每一行做,但我认为这不是一个解决方案,因为 CSV 大小可以达到 40GB。
编辑:Spark 版本是 1.6.0