Sparklyr分裂字符串

时间:2017-06-22 00:28:55

标签: r apache-spark sparklyr

我有一个包含多行的文件。例如

A               B       C    
awer.ttp.net    Code    554
abcd.ttp.net    Code    747
asdf.ttp.net    Part    554
xyz.ttp.net     Part    747

我想在R中使用sparklyr库使用语句在spark中创建一个命令来分割表的A列,我希望在表D中添加一个新行,其值为awer,abcd,asdf和xyz。 / p>

我试过了

data_2 %>% sdf_mutate(node2=ft_regex_tokenizer(data_2, input.col = "A", output.col = "D", pattern="[.]")) %>% sdf_register("mutated")

然后我尝试

mut_trial %>% mutate(E=D[[1]])

eval(expr,envir,enclos)中的错误:object' D'没找到。

我不确定我是否以正确的方式这样做,但想知道是否还有其他任何功能可供使用,或者是否有办法解决此功能以实现我想要的效果。

1 个答案:

答案 0 :(得分:0)

代码在scala中希望你能得到这个想法并在SparkR中转换它

import spark.implicits._
val data = spark.sparkContext.parallelize(Seq(
  ("awer.ttp.net","Code", 554),
  ("abcd.ttp.net","Code", 747),
  ("asdf.ttp.net","Part", 554),
  ("xyz.ttp.net","Part", 747)
)).toDF("A","B","C")

data.withColumn("D", split($"A", "\\.")(0)).show(false)

输出:

+------------+----+---+----+
|A           |B   |C  |D   |
+------------+----+---+----+
|awer.ttp.net|Code|554|awer|
|abcd.ttp.net|Code|747|abcd|
|asdf.ttp.net|Part|554|asdf|
|xyz.ttp.net |Part|747|xyz |
+------------+----+---+----+

希望这有帮助!