Más contenido relacionado La actualidad más candente (20) Similar a R使いがSparkを使ったら (20) R使いがSparkを使ったら9. dplyrによるデータ加工例
iris %>% head(2)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
iris %>%
filter(Species %in% c("setosa", "versicolor")) %>%
group_by(Species) %>%
summarise(sepal_length_sum = sum(Sepal.Length)) %>%
head()
## Source: local data frame [2 x 2]
##
## Species sepal_length_sum
9/28
14. データの読み込み
R
Spark
csvを読み込む場合は自前でパースするか、別のライブラリを用いる。
df <- read.csv("iris.csv")
val hadoopConf=sc.hadoopConfiguration;
hadoopConf.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")
hadoopConf.set("fs.s3.awsAccessKeyId","ほげ")
hadoopConf.set("fs.s3.awsSecretAccessKey","ほげ")
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val df = sqlContext.read.json(s"s3://ほげ/iris.json")
14/28
21. ランクを求める
R
Spark
HiveContextを使う必要がある。
df %>% mutate(Sepal_Length, rank=rank(Sepal.Length))
import org.apache.spark.sql.hive.HiveContext
import org.apache.spark.sql.expressions.Window
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
val df = sqlContext.read.json(s"s3://ほげ/iris.json")
val wSpec = Window.orderBy($"Sepal_Length")
val wSpec = Window.orderBy($"Sepal_Length")
df.select($"Sepal_Length", rank().over(wSpec).alias("rank"))
21/28
26. inner joinする
R
Spark
sample1 %>%
inner_join(., sample2, by=c("prefecture", "city"))
val sample1_url = s"s3://ほげ/sample1.json"
val sample2_url = s"s3://ほげ/sample2.json"
val sample1 = sqlContext.read.json(sample1_url).as("sample1")
val sample2 = sqlContext.read.json(sample2_url).as("sample2")
sample1.join(sample2).
where($"sample1.prefecture" === $"sample2.prefecture" &&
$"sample1.city" === $"sample2.city")
26/28