如何分析ApacheSpark数据建模中的时间维度
如何分析Apache Spark数据建模中的时间维度,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
10年积累的网站建设、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先制作网站后付款的网站建设流程,更有岳阳楼免费网站建设让你可以放心的选择与我们合作。
数据建模是数据分析重要的组成之一,正确的建立模型有助于用户更好地解答业务相关的问题。在过去几十年中,数据建模技术也一直是SQL数据仓库的基础。
Apache Spark作为新一代的数仓技术的代表,我们能够在 Spark 中使用早期的数据建模技术。这使得Spark data pineline 更加有效。下面我将讨论spark中不同的数据建模。
多个日期列
单一日期列在许多数据集中很常见。有些数据集可能需要针对多个日期列分析数据。那么在之前的文章中所讨论的策略是不够的。因此,我们需要扩展日期维度逻辑来容纳多个日期列。
将发行日期添加到股票数据
下面的代码向股票数据添加了一个名为issue_date的日期列,以模拟多个日期的场景。
val appleStockDfWithIssueDate = appleStockDf. withColumn("issue_date",add_months(appleStockDf("Date"),-12))
现在,如果用户希望根据表示交易日期的日期列和表示给定股票何时发行的发布日期列进行分析,那么我们需要使用多个日期维。
带有新前缀的日期维度
为了分析多个日期,我们需要多次连接日期维度。我们需要使用不同前缀的数据维来创建视图,这样我们就可以完成相同的工作。
val issueDateSchema = StructType(dateDf.schema.fields.map(value =>
value.copy(name = "issue_"+value.name)))
val issueDf = sparkSession.createDataFrame(dateDf.rdd, issueDateSchema)
在上面的代码中,我们创建了一个名为issueDf的新df,它为所有列添加了一个名为issue的前缀,表示将这个日期维度组合为issue_date。
三路join
一旦我们准备好了新的日期维度,现在我们就可以连接股票数据中的两个日期了。
val twoJoinDf = appleStockDfWithIssueDate.join(dateDf, appleStockDfWithIssueDate.col("Date") === dateDf.col("full_date_formatted")) .join(issueDf, appleStockDfWithIssueDate.col("issue_date") === issueDf.col("issue_full_date_formatted"))
发行日期分析
一旦我们做了连接,我们可以分析发行日期如下
twoJoinDf.groupBy("issue_year","issue_quarter"). avg("Close"). sort("issue_year","issue_quarter") .show()
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。
分享题目:如何分析ApacheSpark数据建模中的时间维度
文章来源:http://myzitong.com/article/gieeoc.html