Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 相同大小但行长度不同的Spark读取性能差异_Apache Spark_Amazon S3_Apache Spark Sql_Performance Testing - Fatal编程技术网

Apache spark 相同大小但行长度不同的Spark读取性能差异

Apache spark 相同大小但行长度不同的Spark读取性能差异,apache-spark,amazon-s3,apache-spark-sql,performance-testing,Apache Spark,Amazon S3,Apache Spark Sql,Performance Testing,我使用spark sql读取S3中ORC格式的两个不同数据集。但是,对于几乎相同大小的数据集,读取的性能差异是巨大的 数据集1:包含212000000条记录,每条记录50列,总计达15GB,采用s3存储桶中的orc格式 数据集2:包含29000000条记录,每条记录150列,在同一个s3存储桶中以orc格式总计达15GB 使用spark sql读取数据集1需要2分钟。在相同的基础结构中,使用相同的spark读取/计数作业读取数据集2需要12分钟 每行的长度可能会造成如此大的差异。有谁能帮我理解在

我使用spark sql读取S3中ORC格式的两个不同数据集。但是,对于几乎相同大小的数据集,读取的性能差异是巨大的

数据集1:包含212000000条记录,每条记录50列,总计达15GB,采用s3存储桶中的orc格式

数据集2:包含29000000条记录,每条记录150列,在同一个s3存储桶中以orc格式总计达15GB

使用spark sql读取数据集1需要2分钟。在相同的基础结构中,使用相同的spark读取/计数作业读取数据集2需要12分钟


每行的长度可能会造成如此大的差异。有谁能帮我理解在读取这些数据集时产生巨大性能差异的原因吗

假设您使用的是s3a:client(而不是amazonemr&它是s3://client) 这关系到seek()的工作量,以及客户机是否对随机IO很在行。本质上:如果您必须关闭HTTP连接并创建一个新连接,seek()比HTTP1.1 GETs要昂贵得多。Hadoop2.8+为此添加了两个特性::Lazy seek和。高性能随机IO

如果您的classopath上有Hadoop 2.8.+JAR,请执行以下操作:

spark.hadoop.fs.s3a.experimental.input.fadvise random
这将影响非随机IO(读取.gz文件等)的性能,但对ORC/Parquet IO性能至关重要


如果您使用的是Amazon EMR,他们的s3客户端是封闭源代码的,恐怕请咨询他们的支持团队。

我使用的是Amazon EMR和他们的s3客户端。。我可以试着测试性能吗?注意:数据集1中的文件数量较多(数据集2中的文件数量为220个,数据集1中的文件数量为300个)。我怀疑跳过的数量多于文件数量,尽管您可以尝试更多地拆分文件。测试性能,可能从本地安装Hadoop2.8和spark开始,使用“用户提供的JAR”。。。将其粘贴到VM中,并针对第二个数据集打开和关闭搜索。其他战略。在本地下载并比较文件中的性能:/。。这可能是一个基准测试我认为上面的配置键包含了一个输入错误:我认为这应该是
spark.hadoop.fs.s3a.experiential.input.fadvise
(缺少
.input
)。Josh:很好,这对我来说有点尴尬,因为这是我的常数。固定的。