scala—使用ApacheSpark作为web应用程序的后端

ctehm74n  于 2021-05-30  发布在  Hadoop
关注(0)|答案(5)|浏览(487)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

去年关门了。
改进这个问题
我们在hdfs中存储了数TB的数据,包括客户数据和行为信息。业务分析师希望使用过滤器对这些数据进行切片和切分。
这些过滤器类似于Sparkrdd过滤器。过滤器的一些示例如下: age > 18 and age < 35 , date between 10-02-2015, 20-02-2015 , gender=male , country in (UK, US, India) 我们希望在基于jsf(或play)的web应用程序中集成这个过滤器功能。
分析师希望通过应用/移除过滤器进行实验,并验证最终过滤数据的计数是否符合要求。这是一个重复的练习,使用此web应用程序的最大人数可能在100人左右。
我们计划使用scala作为实现过滤器的编程语言。web应用程序将在服务器加载时初始化一个sparkcontext,并且每个过滤器将重用相同的sparkcontext。
spark对于通过web应用程序进行交互式查询的这个用例很好。另外,共享一个sparkcontext的想法,这是一种变通方法吗?另一种方法是使用orc压缩文件格式的apachehive和tez引擎,以及使用jdbc/thrift进行查询。对于给定的工作,这个选项比spark好吗?

w46czmvw

w46czmvw1#

分析师希望通过应用/移除过滤器进行实验,并验证最终过滤数据的计数是否符合要求。这是一个重复的练习,使用此web应用程序的最大人数可能在100人左右。
apachezeppelin提供了一个使用apachespark作为后端的框架,用于交互式地摄取和可视化数据(通过web应用程序)。下面是一个演示这些功能的视频。
另外,共享一个sparkcontext的想法,这是一种变通方法吗?
看起来该项目使用单个sparkcontext来执行低延迟查询作业。

i7uaboj4

i7uaboj42#

我想知道你最后选择了哪种解决方案。
我有两个主张:
继齐柏林飞艇的@quickinsights理念之后,还有一款互动笔记本jupyter,现在已经很成熟了。它最初是为python设计的,但是可以安装专门的内核。几个月前我试过用toree。基本安装很简单: pip install jupyter pip install toree jupyter install toree 但在那个时候,我不得不做一些低水平的twicks使其工作(如编辑) /usr/local/share/jupyter/kernels/toree/kernel.json ). 但它成功了,我可以用scala笔记本上的Spark簇。看看这首短裙,它符合我的记忆。
spark上的大多数(全部?)文档都提到使用spark submit运行应用程序,或者使用spark shell进行交互式使用(对不起,spark和scala shell太令人失望了……)。他们从不谈论在交互式应用程序中使用spark,比如web应用程序。这是可能的(我试过),但是确实有一些问题需要检查,比如共享你提到的sparkcontext,还有一些关于管理依赖性的问题。你可以查看我在springweb应用程序中使用spark的两个入门原型。它是用java编写的,但我强烈建议使用scala。我没有花足够的时间来学习。不过,我可以说这是可能的,而且效果很好(在一个运行在边缘节点上的12节点群集+应用程序上进行了尝试)
只要记住spark驱动程序,即运行rdd代码的地方,应该在spark节点所在的同一个集群上:驱动程序和工人之间有很多通信。

4c8rllxm

4c8rllxm3#

apachelivy支持从web/移动应用程序(不需要spark客户端)编程、容错、多租户地提交spark作业。因此,多个用户可以同时与spark集群交互。

v09wglhw

v09wglhw4#

这不是spark的最佳用例,但完全有可能。但是延迟可能很高。
您可能想查看spark jobserver,它应该提供您所需的大部分功能。您还可以使用spark的jdbc thrift服务器获得数据的sql视图。
一般来说,我建议使用sparksql,它已经处理了很多您可能感兴趣的事情。
另一种选择是使用databricks云,但它还没有公开。

nsc4cvqm

nsc4cvqm5#

我们公司也有类似的问题。我们有大约2-2.5 tb的日志数据。对这些数据做了一些基本的分析。
我们使用了以下方法:
ApacheFlink,用于通过hive将数据从源文件流式传输到hdfs。
将齐柏林飞艇配置在hdfs的顶部。
连接的sql接口和jdbc连接,通过配置单元连接到hdfs。
批量数据离线的spark
您可以使用flink+hive hdfs
可以通过sql应用筛选器(是!最新版本支持所有内容)
zeppelin可以自动化报表生成任务,而且它有很酷的过滤器特性,而不需要使用${sql variable}特性来修改sql查询。
过来看。我相信你会找到你的答案:)
谢谢。

相关问题