私はSpark、SparkR、そして一般にすべてのHDFS関連の技術に慣れています。createDataFrameのSparkRボトルネック?
Sys.setenv(SPARK_HOME="/private/tmp/spark-1.5.0-bin-hadoop2.6")
.libPaths("/private/tmp/spark-1.5.0-bin-hadoop2.6/R/lib")
require('SparkR')
require('data.table')
sc <- sparkR.init(master="local")
sqlContext <- sparkRSQL.init(sc)
hiveContext <- sparkRHive.init(sc)
n = 1000
x = data.table(id = 1:n, val = rnorm(n))
Sys.time()
xs <- createDataFrame(sqlContext, x)
Sys.time()
コードがすぐに実行します。私は1.5.0をスパークとSparkRでいくつかの簡単なコードを実行し、最近インストールしました。しかし、それをn = 1000000
に変更すると、約4分かかります(2回の間にはSys.time()
が呼び出されます)。ポート4040のコンソールでこれらのジョブをチェックすると、n = 1000
のジョブの継続時間は0.2秒、ジョブはn = 1000000
の0.3秒です。私は何か間違っているのですか?
途中で予期せぬ問題が発生しましたが(私がデータフレーム列として置くことができる奇妙なことを忘れていることは言及していませんが)、これは1.6.0で解決する必要があります:[SPARK-11086](https://issues.apache.org/jira/browse/SPARK-11086) – zero323