云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

香港服务器_网站建设从入门到精通_三重好礼

小七 141 0

Spark 2.6版涡轮增压器的雪花连接器带有Apache Arrow

Spark 2.6版涡轮增压器的雪花连接器带有Apache Arrow2020年4月8日|5分钟读取作者:明丽芮|供稿作者:李冰冰、马英九如何使用雪花,雪花技术Spark的雪花连接器("Spark Connector")现在使用apachearrow列式结果格式来显著提高查询读取性能。以前,Spark Connector首先执行一个查询,然后将结果集以CSV或JSON格式复制到stage,然后从Snowflake读取数据并将其加载到Spark DataFrame中。通常,从雪花云数据平台数据源读取数据时,下载和反序列化CSV或JSON数据会消耗大量的端到端处理时间。在这个2.6.0版本中,Snowflake Spark连接器直接通过JDBC执行查询,并使用Snowflake的新客户机结果格式Arrow(反)序列化数据。这样可以节省数据读取的时间,还可以使用缓存的查询结果。基准测试结果:使用apachearrow可缓存、快速读取在这个基准测试中,我们运行了一个Spark作业来读取LINEITEM表中的数据,该表的压缩大小为雪花格式的16.3gb。该表是标准的TPC-H LINEITEM表。通过执行新的二进位格式,我们从新的二进位表格中撷取更有效的二进位资料,以增加资料的吞吐量。我们看到这个Spark作业的端到端性能立即提高了4倍。这种改进是由于Spark连接器获取和处理雪花查询结果的时间提高了10倍。此外,Snowflake还有一个查询结果缓存,用于对未更改的数据进行操作的重复查询。通过存储可重用的结果,数据库可以避免重新计算,只需指示客户机驱动程序从已计算的结果缓存中读取。在Spark Connector的早期版本中,此查询结果缓存不可用。从2.6.0版开始,Spark Connector将使用直接查询向Snowflake发出下推作业;这意味着Spark Connector能够充分利用查询结果缓存。我们在基准结果中也看到了这一好处,如下所示。使用缓存读取,上述Spark作业的端到端性能比在Spark连接器的早期版本中使用未缓存的CSV格式读取时快14倍。我们使用awsec2 c4.2x大型计算机、apachespark 2.4.5和scala2.11运行了一个由4个工人组成的Spark集群。雪花仓库的大小是4倍大。雪花部署的云和Spark集群部署在同一个云区域:US-West-2(俄勒冈州)。下表显示了结果:用于基准测试的Scala代码下面的代码片段用Arrow显示了用于基准测试的代码。将"use_copy_unload"配置为"true"可以在没有箭头的情况下测试性能。进口净雪花火花雪花_//雪花火花连接器选项//"使用缓存的结果"的默认值为"false"。//"true"表示禁用此功能。val s选项:Map[String,String]=Map("sfSSL"->"开","sfUser"->"","pem_private_key"->"","使用\u copy_unload"->"false","使用缓存的结果"->"真","sfDatabase"->"","sfURL"->"","sfWarehouse"->"雪花仓库","分区""大小""单位为\u mb"->"60")//测试表为TPCH LINEITEM,有600米行。//它的雪花压缩大小是16.3GB。val sourceTableName="行项目"val sourceSchema="TPCH_SF100"值df=sqlContext.read.格式("净雪花火花雪花").选项(选项).option("dbtable",sourceTableName).option("sfSchema",sourceSchema).加载()//在任何测试之前清除缓存sqlContext.clearCache()//执行cache()和show(1)将所有数据读入缓存//显示一排。可以忽略显示一行的时间。//数据帧执行时间被视为读取时间。val开始时间=系统电流时间毫秒()数据仓库缓存().显示(1)val结束时间=系统电流时间毫秒()val result_msg=s"读取时间:${(endTime-startTime).toDouble/1000.0}s"println(结果消息)SPARK雪花连接器中的箭头支持入门箭头格式可用于Spark 2.6.0及更高版本的雪花连接器,默认情况下已启用。有关更多详细信息,请参阅Spark文档的雪花连接器。就像你读的?通过喜欢和分享来表达你的感激之情!Facebook推特LinkedIn