【发布时间】:2017-09-21 05:36:34
【问题描述】:
我的问题与here 中的问题类似,但我在实现答案时遇到了问题,我无法在该线程中发表评论。
所以,我有一个包含嵌套数据的大 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 将此 CSV 读入 2 个不同的 Spark 表。
到目前为止,这是我一直在做的:
-
使用
spark_read_csv将所有CSV内容导入Spark数据表df = spark_read_csv(sc, path = "path", name = "simData", delimiter = " ", header = "false", infer_schema = "false")结果是一个名为
simData的 Spark 表,包含 2 列:C0和C1 -
使用
dplyr选择第一列和第二列,然后分别注册为新表Y和XsimY <- df %>% select(C0) %>% sdf_register("simY")simX <- df %>% select(C1) %>% sdf_register("simX") -
使用
ft_regex_tokenizer函数拆分simX中的值,对于写在here中的答案。ft_regex_tokenizer(input_DF, input.col = "COL", output.col = "ResultCols", pattern = '\\###')
但是当我尝试使用dplyr head 时:
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 表并将类型转换为 double。有没有办法做到这一点?
我已经考虑将collect 数据转换为 R(使用dplyr),转换为矩阵,然后为每一行执行strsplit,但我认为这不是一个解决方案,因为 CSV 大小可以达到 40GB .
编辑:Spark 版本是 1.6.0
【问题讨论】:
-
您尝试过 sdf_separate_columns 吗?请参阅其他讨论。
标签: r apache-spark dplyr tidyr sparklyr