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

香港服务器_网站建设手机版_折扣

小七 141 0

sparksql:使用apachespark操作结构化数据

为大数据分析构建一个统一的平台一直是apachespark的愿景,它允许单个程序执行ETL、MapReduce和复杂的分析。统一性的一个重要方面是,我们的用户一直要求能够更容易地导入存储在外部源(如apachehive)中的数据。今天,我们很高兴地宣布sparksql,这是最近合并到Spark存储库中的一个新组件。sparksql为Spark带来了对SQL的本地支持,并简化了查询存储在RDDs(Spark的分布式数据集)和外部源中的数据的过程。sparksql很方便地模糊了rdd和关系表之间的界限。在一个强大的外部应用程序中,查询SQL使所有复杂的数据与外部数据分析混合在一起。具体来说,Spark SQL将允许开发人员:从Parquet文件和配置单元表导入关系数据对导入的数据和现有的RDD运行SQL查询轻松地将RDD写入配置单元表或拼花板文件启动SQL现在,让我们仔细看看sparksql如何让开发人员能够将SQL命令集成到应用程序中,这些应用程序还可以利用Spark的机器学习库MLlib。考虑一个应用程序,它需要根据用户的配置文件预测哪些用户可能是服务的候选者。通常,这样的分析需要连接来自多个源的数据。为了便于说明,假设一个应用程序有两个表:用户(userId INT,name String,email String,年龄INT,纬度:双倍,经度:双倍,订阅:布尔值)事件(userId INT,action INT)考虑到这些表中存储的数据,您可能需要构建一个模型,根据相似的用户预测哪些用户是新活动的好目标。//数据可以很容易地从现有来源提取,//比如阿帕奇蜂巢。val trainingDataTable=sql(""选择e.actionu、 年龄,u、 纬度,u、 后勤来自用户u加入活动e在u.userId=e.userId"")上//由于sql返回一个RDD,因此上面的结果//查询可以很容易地在MLlib中使用val培训数据=trainingDataTable.map{行=>val features=Array[Double](行(1)、行(2)、行(3))标签点(行(0),功能)}val模型=new logisticRegressionWithGD().run(trainingData)现在我们已经使用SQL连接现有数据并训练模型,我们可以使用这个模型来预测哪些用户可能是目标。val allCandidates=sql(""选择userId,年龄,纬度,后勤来自用户其中subscribed=FALSE"")//ML算法的结果可以作为表格使用//在随后的SQL语句中。案例类得分(userId:Int,Score:Double)val分数=所有候选人.map{行=>val features=Array[Double](行(1)、行(2)、行(3))分数(第(0)行,模型.预测(特征)}分数.registeratable("分数")val topCandidates=sql(""选择u.name,u.email从分数s在s.userId=u.userId上加入用户u按分数排序说明限制为100")//给最优秀的候选人发邮件来推广这项服务。在这个例子中,sparksql使提取和连接各种数据集变得容易,为机器学习算法做准备。由于sparksql的结果也存储在rdd中,与其他Spark库的接口非常简单。此外,sparksql允许开发人员关闭循环,通过简化操作和连接这些算法的输出,产生所需的最终结果。总之,unified Spark平台使开发人员能够为正确的工作选择正确的工具,而不必在多个系统之间进行切换。如果您想看到更多使用sparksql的具体示例,请查看编程指南。催化剂优化除了提供与数据交互的新方法外,sparksql还带来了一个强大的新优化框架Catalyst。使用Catalyst,Spark可以自动转换SQL查询,以便它们更有效地执行。Catalyst框架允许Spark SQL背后的开发人员快速添加新的优化,使我们能够更快地构建更快的系统。在最近的一个例子中,我们发现Hive group bys效率低下,一位经验丰富的开发人员花了整整一个周末的时间,花了250多行代码来修复;然后,我们只需几行代码就可以在Catalyst中进行相同的修复。鲨鱼的未来随之而来的自然问题是关于鲨鱼的未来。Shark是第一批在蜂巢上实现100倍加速的系统之一。它构建在Apache配置单元的代码基础上,通过交换配置单元的物理执行引擎部分来实现性能改进。虽然这种方法使Shark用户能够在不修改现有仓库的情况下加快其Hive查询,但Shark从Hive继承了大量复杂的代码库,这使得优化和维护变得非常困难。随着Spark SQL的成熟,Shark将过渡到使用Spark SQL进行查询优化和物理执行,这样用户就可以从Spark SQL中不断进行的优化工作中获益。简言之,我们将继续投资Shark,使其成为Apache Hive的理想替代品。它将利用新的sparksql组件,并提供一些补充功能,例如配置单元兼容性和独立SharkServer,后者允许外部工具通过JDBC/ODBC连接查询。下一步是什么Spark SQL将作为alpha组件包含在Spark 1.0中。然而,这仅仅是Spark中更好地支持关系数据的开始,这篇文章只触及了催化剂的表面。寻找未来关于以下主题的博客文章:生成自定义字节码以加速表达式求值使用其他格式和系统(包括Avro和HBase)读写数据在Python和Java中使用sparksql的API支持免费试用Databricks。今天就开始吧