Performance Spark standalone:SparkyR:性能问题

Performance Spark standalone:SparkyR:性能问题,performance,apache-spark,machine-learning,sparklyr,Performance,Apache Spark,Machine Learning,Sparklyr,我正试图在Spark服务器上运行Sparkyr库中的机器学习算法 1簇 8芯 24G RAM Ubuntu 16.04 火花2.2 独立配置 1名船长/2名工人 每个执行器的内存:4G 8芯/工人 4096工作区内存 实际上,我在一个非常小的数据集(72 x 100)上测试ml_决策树。 我首先从R(read.CSV)中的CSV文件本地读取原始数据集(72 x 7350),执行整形,然后在Spark中加载结果(df_fin)(我直接在安装Spark的集群上运行代码): 35分钟后,在控制台:

我正试图在Spark服务器上运行Sparkyr库中的机器学习算法

  • 1簇
  • 8芯
  • 24G RAM
  • Ubuntu 16.04
  • 火花2.2
  • 独立配置
  • 1名船长/2名工人
  • 每个执行器的内存:4G
  • 8芯/工人
  • 4096工作区内存
实际上,我在一个非常小的数据集(72 x 100)上测试ml_决策树。 我首先从R(read.CSV)中的CSV文件本地读取原始数据集(72 x 7350),执行整形,然后在Spark中加载结果(df_fin)(我直接在安装Spark的集群上运行代码):

35分钟后,在控制台:“*没有被'na.omit'调用丢弃的行” 这意味着事情正在向前发展

所以它还在做些什么,但我不明白是什么。当我在自己的计算机上的RShiny中本地运行相同的代码时,过程完成得相当快(3或4分钟)。最后,我的过程在+/-50分钟后结束,出现以下错误:

错误:java.lang.OutOfMemoryError:超出GC开销限制

我猜这个Java错误来自垃圾收集器,它使用了我大部分的CPU资源,没有空闲的内存。。。但是它是从哪里来的呢

我想我在我的理解中遗漏了一些东西;通常情况下,Spark会加快进程,但在我的情况下,这是最糟糕的。我不能用这种方式处理庞大的数据集

此外,我想在Spark中加载我的原始数据帧(72 x 7350)以在其上执行机器学习(当我的慢度问题得到解决时…)

最好的方法是什么?使用spark\u read\u csv?我不使用HDFS。我认为我将没有足够的数据来利用Hadoop的能力(一些Tb,而不是更多)

当我尝试加载原始数据帧时,出现以下错误:

原因:org.codehaus.janino.JaninoRuntimeException:类org.apache.spark.sql.catalyst.expressions.GeneratedClass$SpecificUnsafeProjection的常量池已超过JVM限制0xFFFF

我在SPARK-18016上看到的比

“我们修复了大量列(例如4000列)的问题。但是,我们知道我们尚未解决大量列(例如12000列)的问题。”

我真的不明白。Spark是为大数据而设计的,为什么它会因7350 colmuns而失败

有人能指导我这个问题吗?是我的头发吗?我应该增加更多的工人吗

非常感谢

我真的不明白。Spark是为大数据而设计的,为什么它会因7350 colmuns而失败

并非所有的“大数据”都是平等的,根据数据的形状(宽、长、宽)做出不同的设计选择。大多数时候,系统关注的是长而细的数据集。Spark就是这样

这里的问题不是数据量,而是优化器的复杂性。在Spark ML中,这不是一个大问题,因为Spark使用
Vector
类型来组合功能,如果这还不够,则始终可以使用低级API
Sparkyr
然而,做出了一个不幸的决定,扩展了转换后的特性——这是一个不能很好工作的东西

72 x 7350

用Spark处理这样的数据是没有意义的。如果您可以运行:

df_tbl <- sdf_copy_to(sc,df_fin)

谢谢你的回答。不过,我希望有一些精确性;你说Sparkyr做了不幸的决定是什么意思?你的意思是,如果我用Python或直接用Scala实现,我的代码会工作得更好吗?此外,我想使用Spark,因为在不久的将来,我将不得不处理大量这样的数据帧(临床数据,意味着大量广泛的数据,但也包括成像数据,以进行深入学习);这就是为什么我猜测Spark可能是一个有用的解决方案?你对此有什么看法?
17/08/23 15:35:32 INFO ShuffleBlockFetcherIterator: Getting 0 non-empty blocks out of 200 blocks
17/08/23 15:35:32 INFO ShuffleBlockFetcherIterator: Started 0 remote fetches in 0 ms
17/08/23 15:35:32 INFO ShuffleBlockFetcherIterator: Getting 26 non-empty blocks out of 200 blocks
17/08/23 15:35:32 INFO ShuffleBlockFetcherIterator: Started 1 remote fetches in 1 ms
17/08/23 15:35:32 INFO Executor: Finished task 1.0 in stage 494.0 (TID 39532). 3082 bytes result sent to driver
17/08/23 15:35:32 INFO Executor: Finished task 0.0 in stage 494.0 (TID 39531). 4073 bytes result sent to driver ...
df_tbl <- sdf_copy_to(sc,df_fin)