我是Web服务的新手,我正在尝试创建像这样的Web服务: 用户将一些单词输入网页. 后端开始使用Apache Spark作业,该作业使用这些单词作为输入参数 该作业的结果应处理并在网页中显示. 我想在不使用任何Spark-a as-a-Service产品(如蓝光等)等的情况下使这成为独立的事物. 现在,我正在考虑使用类似的事情:后端中的Python服务器接受请求,并通过输入发射新的Spark作业.当Spark作业完成后,Python服务处理输出并将其发送回页面. 我不确定这是否是这样做的最佳方法.另外,我不确定如何在网页中实时显示Spark作业的进度. 解决方案 Apache Livy项目可能适合您的需求. Livy可以通过REST接口或RPC客户端库使用同步和异步结果提交Spark. 希望这个帮助!
以下是关于 apache-spark 的编程技术问答
我是Spark的新用户.我有一个Web服务,允许用户通过从数据库中读取并将结果推回数据库来请求服务器执行复杂的数据分析.我已经将这些分析转移到了各种火花应用中.目前,我使用Spark-Submit部署这些应用程序. 但是,我很好奇,当我的Web服务器(用Java编写)收到用户请求时,什么是启动相应Spark应用程序的"最佳实践"方法? Spark的文档似乎是使用" Spark-Submit",但我宁愿不将命令输出到终端以执行此操作.我看到了一个替代性的Spark-Jobserver,它提供了一个重新操作的界面,但是我的Spark应用程序是用Java或R编写的,它似乎与Spark-Jobserver互动不太吻合. . 是否还有另一个最佳实践可以从Web服务器(在Java中)启动Spark应用程序,并等待状态结果,无论工作是否成功还是失败? 关于其他人为实现这一目标的任何想法都将非常有帮助!谢谢! 解决方案 我有类似的要求.这是我所做的: 要提交应用程序,我
我在 emr群集上运行火花乔布,我面临的问题是全部 触发的EMR作业正在以步骤执行(在队列中) 是否有任何方法使它们平行运行 如果没有,则有任何改变 解决方案 弹性mapReduce默认情况下,纱线设置非常"台阶",单个容量scheduler队列,分配了100%的群集资源.由于这种配置,每当您向EMR群集提交作业时,YARN最大化该单个作业的群集使用量,授予所有可用资源,直到完成为止. 在EMR群集(或任何其他基于纱线的Hadoop群集)中运行多个并发作业,需要一个适当的纱线设置,并具有多个队列以将资源适当地授予每个作业.纱线的文档对所有容量调度程序功能都非常好,而且听起来更简单. Yarn的Fairscheduler非常受欢迎,但它使用了另一种方法,并且根据您的需求可能很难配置.考虑到最简单的场景,您有一个公平的队列,纱线将在运行工作释放一旦释放出来,以确保提交给集群的所有工作至少会尽快获得计算资源的一小部分因为它们可用. 其他解决方案 如果您担
我是Spark的新用户.我有一个Web服务,允许用户通过从数据库中读取并将结果推回数据库来请求服务器执行复杂的数据分析.我已经将这些分析转移到了各种火花应用中.目前,我使用Spark-Submit部署这些应用程序. 但是,我很好奇,当我的Web服务器(用Java编写)收到用户请求时,什么是启动相应Spark应用程序的"最佳实践"方法? Spark的文档似乎是使用" Spark-Submit",但我宁愿不将命令输出到终端以执行此操作.我看到了一个替代性的Spark-Jobserver,它提供了一个重新操作的界面,但是我的Spark应用程序是用Java或R编写的,它似乎与Spark-Jobserver互动不太吻合. . 是否还有另一个最佳实践可以从Web服务器(在Java中)启动Spark应用程序,并等待状态结果,无论工作是否成功还是失败? 关于其他人为实现这一目标的任何想法都将非常有帮助!谢谢! 解决方案 我有类似的要求.这是我所做的: 要提交应用程序,我
我想建立一个网站并将其部署到GitHub页面或Heroku.我的问题是:是否可以在网站中嵌入现场直播(可以在其中运行代码)Google COLAB笔记本? 我希望此嵌入的Colab笔记本以执行火花代码! 谢谢! 解决方案 即使答案有点晚,我也遇到了同样的问题,得出的结论是目前仍然不可能. 但是,有一段时间以前打开了一个功能请求在这里.我认为您最能做的就是提出问题. 嵌入而无需执行 尽管有一个半功能的解决方法... you 可以导出您已经执行的笔记本,并将其嵌入您的网页. 将Colab作为要点(Colab-> file->将副本保存为GitHub Gist) 将要点公开(要点 - >编辑 - >公开) 将链接嵌入您的网页 有关进一步的说明,详细信息和屏幕截图,请参见本文.
当我参加一次有关网络挖掘的采访时,一个有趣的问题问我.问题是,是否可以使用Apache Spark爬网? 我猜想这是可能的,因为它支持Spark的分布处理能力.采访后,我搜索了这个问题,但找不到任何有趣的答案.火花可能会吗? 解决方案 以这种方式如何: 您的应用程序将获得一组网站URL作为爬网的输入,如果您仅实现一个普通应用程序,则可以按以下方式执行: 将所有网页划分为单独的站点列表,每个站点都足够小,以适合一个线程: for example: you have to crawl www.example.com/news from 20150301 to 20150401, split results can be: [www.example.com/news/20150301, www.example.com/news/20150302, ..., www.example.com/news/20150401] 将每个基本URL(www.example.com
我正在使用Apache Spark本地模式运行Pyspark 2.2.0作业,并查看以下警告: WARN RowBasedKeyValueBatch: Calling spill() on RowBasedKeyValueBatch. Will not spill but return 0. 此警告的原因是什么?这是我应该关心的东西还是可以安全地忽略它? 解决方案 如所示在这里此警告意味着您RAM已满,RAM内容的一部分已移至磁盘. 另请参阅 spark faq 我的数据是否需要适合内存才能使用Spark? 否.如果不适合内存,Spark的操作员将数据溢出到磁盘上,从而使其在任何尺寸的数据上都可以很好地运行.同样,根据RDD的存储级别确定的不适合内存的缓存数据集可以溢出到磁盘或随时重新计算. 确定. 其他解决方案 我猜该消息比一个简单的警告更糟糕:它是错误的边缘. 查看源代码: /** * Sometimes the Ta
我已经在Windows 10机器上安装了使用Apache Spark. java, Python 3.6和 Spark(Spark-2.3.1-bin-Hadoop2.7) 我正在尝试在VSCODE中编写与Pyspark相关的代码.它显示"从"下方显示红色下划线,并显示错误消息 e0401:无法导入'pyspark' 我还使用了Ctrl+Shift+P,然后选择" Python:Update Workspace Pyspark库".它显示通知消息 确保您将Spark_Home环境变量设置为本地Spark安装的根路径! 怎么了? 解决方案 您需要使用 pyspark 使用pip install pyspark python package python package .实际上,这是vScode所需的唯一包装,除非您也想在同一台计算机上运行Spark应用程序.
我有一个像这样定义的Scala类: import org.apache.spark.{SparkConf, SparkContext} object TestObject extends App{ val FAMILY = "data".toUpperCase override def main(args: Array[String]) { val sc = new SparkContext(new SparkConf()) sc.parallelize(1 to 10) .map(getData) .saveAsTextFile("my_output") } def getData(i: Int) = { ( i, FAMILY, "data".toUpperCase ) } } 我将其提交给像这样的纱线集群: HADOOP_CONF_DIR=/etc/hadoop/conf spark-sub
我正在2个节点纱线群上运行火花作业.我的数据集并不大( 16/02/12 05:49:43警告Scheduler.taskSetManager:丢失任务0.0阶段2.1(TID 22,IP-172-31-6-141.EC2.INTERN)运行任务之一)原因:标记为失败的容器:container_1455246675722_0023_01_000003主机上:IP-172-31-6-141.ec2.internal.退出状态:143.诊断:容器[PID = 23206,ContainerId = Container_1455246675722_0023_01_000003]正在超越虚拟内存限制.当前用法:2.1 GB的11 GB物理内存; 305.3 GB的23.1 GB使用虚拟内存.杀死容器. container_14552466675722_0023_01_000003的conseg-tree的转储: | - PID PPID PGRPID SESSID CMD_NAME use
当我尝试运行使用Apache Spark的测试时,我会遇到以下例外: Exception encountered when invoking run on a nested suite - System memory 259522560 must be at least 4.718592E8. Please use a larger heap size. java.lang.IllegalArgumentException: System memory 259522560 must be at least 4.718592E8. Please use a larger heap size. 我可以通过更改config中的vm otions来绕过错误,以便它具有:-Xms128m -Xmx512m -XX:MaxPermSize=300m -ea,如 所示 http://apache-spark-user-list.1001560.n3.nabble.com/spar
我在Mac(Sierra 10.12.3 beta)中使用ipython笔记本(python v.3.6)中的pyspark(v.2.1.0). 1.我通过在终端拍摄ipython笔记本 - PYSPARK_PYTHON=python3 PYSPARK_DRIVER_PYTHON=ipython PYSPARK_DRIVER_PYTHON_OPTS="notebook" /Applications/spark-2.1.0-bin-hadoop2.7/bin/pyspark 2.将我的文件加载到火花上下文并确保其加载 - >>>lines = sc.textFile("/Users/PanchusMac/Dropbox/Learn_py/Virtual_Env/pyspark/README.md") >>>for i in lines.collect(): print(i) 效果很好,并在我的控制台上打印了结果,如下所示: # Apache
当我在Windows 7计算机上本地启动Spark Master时,由于某种原因,WebUI显示了URL,并使用错误的IP地址静止. 下面是我用来启动主脚本的批处理脚本,其中%IP%是我的本地IP地址. set SPARK_MASTER_IP=%IP% set SPARK_PUBLIC_DNS=%IP% set SPARK_MASTER_PORT=7077 set SPARK_MASTER_WEBUI_PORT=8080 set SPARK_MASTER_REST_PORT=6066 START "spark-master" /MIN "C:/spark-1.6.0-bin-hadoop2.6/bin/spark-class.cmd" ^ org.apache.spark.deploy.master.Master 主Web UI显示错误的IP.由于某种原因,它正在拾取属于同一台计算机上的虚拟盒的IPv4地址的IP地址. (请注意,我不以任何方式使用Virutal
我正在尝试解析本质动态并加载到数据库中的JSON结构.但是面对JSON中有动态键的困难.以下是我的示例JSON:尝试使用爆炸功能,但没有帮助. 这里描述了同样的东西 { "_id": { "planId": "5f34dab0c661d8337097afb9", "version": { "$numberLong": "1" }, "period": { "name" : "3Q20", "startDate": 20200629, "endDate": 20200927 }, "line": "b443e9c0-fafc-4791-87c9- 8e32339c7f3c", "channelId": "G7k5_-HWRIuF0-afe7q-rQ" }, "unitRates": { "units": { "$numberLong": "0" }, "rate": 0.0, "rcRate": 0.0 }, "demoValues": { "66": { "cpm": 0.0, "cpp
我有一个火花集群和一个Vertica数据库.我使用 spark.read.jdbc( # etc 将Spark DataFrames加载到集群中.当我执行某个组函数 时 df2 = df.groupby('factor').agg(F.stddev('sum(PnL)')) df2.show() i然后获得vertica语法异常 Driver stacktrace: at org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1454) at org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1442) at org.a
我想使用apache spark并通过JDBC连接到Vertica. 在Vertica数据库中,我在另一台服务器上有1亿个记录,Spark代码运行. 当我在Spark和Monitor网络使用情况下运行查询时,两个服务器之间的流量很高. 似乎Spark从目标服务器加载了所有数据. 这是我的代码: test_df = spark.read.format("jdbc") .option("url" , url).option("dbtable", "my_table") .option("user", "user").option("password" , "pass").load() test_df.createOrReplaceTempView('tb') data = spark.sql("select * from tb") data.show() 当我运行此操作时,2分钟和非常高的网络使用情况后,结果返回. Spark是否
我使用版本1架构生成了一年多的镶木quet文件.随着最近的模式更改,更新的镶木quet文件具有版本2架构额外的列. 因此,当我从旧版本和新版本加载Parquet文件时 我想让Spark读取旧文件和新文件并填充不存在该列的空值.在此方面,当找不到列时,Spark填充了Null值? 解决方案 SparkSQL本身支持架构文件合并的模式.您可以在官方文件 喜欢ProtocolBuffer,Avro和Thrift,Parquet也支持模式 进化.用户可以从简单的模式开始,然后逐渐添加 根据需要的更多列到模式.这样,用户可能最终 具有多个具有不同但相互兼容的镶木quet文件 模式.镶木quet数据源现在能够自动检测 这种情况并合并所有这些文件的模式. 由于模式合并是一个相对昂贵的操作,并且不是 在大多数情况下,我们的必要性,默认情况下将其关闭 1.5.0.您可以通过 启用它 将数据源选项设置为true true读取木木quet 文件(如下示例所示)或 设置
我很难理解进入build.sbt文件的多个版本号. 1. version 2. scalaVersion 3. spark version? 4. revision number. 这些版本之间也有多个兼容性. 您能解释一下如何为我的项目决定这些版本吗? 解决方案 我希望以下SBT行及其评论足以解释您的问题. // The version of your project itself. // You can change this value whenever you want, // e.g. everytime you make a production release. version := "0.1.0" // The Scala version your project uses for compile. // If you use spark, you can only use a 2.11.x version. // Also, because S
嗨,我是在spark站点上的runnign示例, http://spark.apache.org/docs/1.2.0/quick-start.html#self-contain--applications 火花版本:Spark-1.4.0 SBT版本:0.13.8 和我运行命令" sbt run"并获得错误" 当我试图启动SparkContext类时,此应用程序在" Val SC = New SparkContext(Conf)"上失败.我已经四处搜索并查看 >但是我没有使用hadoop-client. 您能检查一下吗?我的猜测是build.sbt中的版本问题.非常感谢. 更新:我尝试提交python应用程序并正常工作,这意味着火花集群还可以. Scala代码如下: /* SimpleApp.scala */ import org.apache.spark.SparkContext import org.apache.spark.SparkC