我有一个运行在Docker容器中的Spark master,它依次在远程服务器上执行。在Spark master旁边,有一些容器在同一Docker主机上运行Spark slave
服务器Docker主机Docker容器
为了让从属服务器找到主服务器,我在DockerSPARKMASTER中设置了一个主服务器主机名,从属服务器使用该主机名连接到主服务器。到目前为止,一切顺利
我使用SPARK\u MASTER\u IP环境变量让MASTER绑定到该名称
我还将Spark端口7077公开给Docke
我在独立部署模式下使用spark 1.5.2,并使用脚本启动。执行器内存通过conf/spark-defaults.conf中的“spark.executor.memory”设置。这将为所有工作节点设置相同的内存限制。我想让它这样一个可以设置不同的节点不同的限制。我该怎么做
(Spark 1.5.2,ubuntu 14.04)
谢谢,我不认为有任何方法可以让大小不一的遗嘱执行人。您可以限制工作节点的大小,但这实际上限制了工作节点可以在该框上分配的内存总量
在运行应用程序时,您只能在应用程序级别指
我要这个
它说RDD上的reduce操作是一次一台机器完成的。这意味着,如果您的数据在两台计算机上分割,那么下面的函数将处理第一台计算机中的数据,将找到该数据的结果,然后它将从第二台计算机中获取一个值,运行该函数,并将以这种方式继续,直到处理完来自机器2的所有值为止。这是正确的吗
我认为该函数将同时在两台机器上开始运行,然后一旦有来自两台机器的结果,它将再次最后一次运行该函数
rdd1=rdd.reduce(lambda x,y: x+y)
更新1-----------------------
当我运行这段代码时,按Ctrl+Z仍然会执行暂停的默认行为,而不是执行我的处理函数
如果我删除了spark内容,则此代码的工作方式与我希望的相同:
import signal
def handler(signum, frame):
print 'Please refrain from using CTRL + Z, use CTRL + C instead'
signal.signal(signal.SIGTSTP, handler)
whi
我正在使用jupyter在Spark集群上运行python脚本。我想更改驱动程序默认堆栈大小。我在中发现,我可以使用spark.driver.extraJavaOptions将任何选项发送到驱动程序JVM,但文档中有一个注释:
注意:在客户端模式下,此配置不能通过
直接在应用程序中使用SparkConf,因为驱动程序JVM
已经开始了。相反,请通过
--驱动程序java选项命令行选项或默认属性文件中
问题是:如何在从jupyter运行时更改默认驱动程序参数?您可以通过将spark.driver.
Apache Spark的IBM安装程序(在我的例子中是IBM_Spark_DK_2.1.0.0_Linux_s390x.bin)提供了以下选项来执行安装程序(我缩短了选项列表以使其更具可读性):
我找到了答案:
IBM_Spark_DK_2.1.0.0_Linux_s390x.bin -i silent -f <pathToInstallerPropertiesFile/InstallerPropertiesFile.cfg>
有趣的是,我找不到选项列表的文档。但一旦安装,您可以
解码时出错:
java.util.concurrent.ExecutionException: java.lang.Exception: failed to
compile: org.codehaus.commons.compiler.CompileException: File
'generated.java', Line 58, Column 33: Incompatible expression types "boolean"
and "java.lang.Boolean"
在此处查
标签: Apache Spark
apache-spark-sqlspark-structured-streamingapache-spark-standalone
我使用Spark 2.1.1
我使用结构化流媒体从2个Kafka分区读取消息。我正在向Spark Standalone cluster提交我的应用程序,其中有一个工作线程和两个执行线程(每个线程有两个内核)
我想要的功能是,来自每个Kafka分区的消息应该由每个单独的执行者独立处理。但是现在的情况是,执行器分别读取和映射分区数据,但是在映射完之后,通常会使用所形成的无界表,并且两个分区都有数据
当我在表上运行结构化查询时,查询必须处理来自两个分区的数据(更多的数据)
选择产品id、最大(smr.
在spark UI的“流”选项卡中,我查看输出Op Id,单击spark UI的“流”选项卡中的任何微批次链接后出现的第一个列-它的作业Id号为0,1,2,3。这是否意味着所有这些作业都是并行运行的?每个作业id对应于驱动程序代码中的函数调用。或者它们是连续的?如何从DAG或Spark UI判断代码的不同功能是否同时运行?如果变量相互依赖,它必须是顺序执行。除了Kafka流之外,我没有任何公共变量。Kafka流被传递到驱动程序代码中的每个单独函数。如果变量相互依赖,它必须是顺序执行。除了传递给驱
试图遵循spark教程,但出现以下错误-
“未定义名称“spark”
如果spark版本为1.0.1,则不应使用2.2.0版的教程。这些版本之间有重大变化
在这个网站上你可以找到
在1.6.0教程之后,您必须使用textFile=sc.textFile(“README.md”)而不是textFile=spark.read.text(“README.md”)您的spark版本是什么?版本-spark 1.0.1如果不是2.0+,请更新到1.6。这将是一个更容易的学习体验。:)
Using Pyt
我第一次尝试解析Kafka上的JSON以激发结构化流,需要一些帮助
我正在努力转换传入的JSON并将其转换为平面数据帧以进行进一步处理
我的输入是json
[
{ "siteId": "30:47:47:BE:16:8F", "siteData":
[
{ "dataseries": "trend-255", "values":
[
{"ts": 1502715600, "
我正在使用pyspark.ml.classification
我在一个二进制类数据集上运行模型并显示概率
我的col概率如下:
+-----+----------+---------------------------------------+
|label|prediction|probability |
+-----+----------+---------------------------------------+
|0.0 |0.
标签: Apache Spark
apache-spark-sqlapache-spark-mllibapache-spark-ml
我试图使用scala API计算ROC下按关键字段分组的AUC区域,类似于以下问题:
不幸的是,我不能使用sklearn。我怎样才能继续 我们将使用sklearn/mllib中使用的相同方法,即。这是一种用来近似定积分的技术
这很简单,您可以在中找到相同的代码
def梯形点:Seq[双精度,双精度]:双精度={
requirepoints.length==2
val x=点.head
val y=最后一个点
y、 _1-x._1*y._2+x._2/2.0
}
def Area UnderCur
如何从集群中的HDFS中提取数据?
如何将块转换为RDD
假设我有3个节点的集群,我有一个名为log.txt的文件,它被分为3个块。所有3个节点的每个块都有一个节点
spark如何加载log.txt以及如何将其转换为RDD?spark与任何HDFS客户端都没有区别
联系namenode获取文件,它返回块的位置,然后HDFS客户端将从datanodes获取块
块不会转换为RDD,而RDD只是应用在Hadoop InputSplit上的元数据,Hadoop InputSplit是由RecordRea
我有两个spark数据帧:包含所有项目事务的dataframe_1和具有唯一项目ID的dataframe_2。我想为dataframe_2中的每个值筛选dataframe1中的所有行
我正在尝试使用连接查询,但不确定如何继续,下面是用scala编写的主程序:
def main(args: Array[String]) {
Logger.getLogger("org").setLevel(Level.ERROR)
val ss = SparkSession
.bui
我正在运行Pyspark脚本,将数据帧写入jupyter笔记本中的csv,如下所示:
df.coalesce(1).write.csv('Data1.csv',header = 'true')
运行一小时后,我得到以下错误
错误:中的无效状态代码未激活
我的配置如下:
spark.conf.set("spark.dynamicAllocation.enabled","true")
spark.conf.set("shuffle.service.enabled","true")
spark.co
我必须使用我的本地spark来连接具有身份验证的远程配置单元
我可以通过直线连接
直线>!连接jdbc:hive2://bigdatamr:10000/default
连接到jdbc:hive2://bigdatamr:10000/default
输入jdbc的用户名:hive2://bigdatamr:10000/default:myusername
输入jdbc的密码:hive2://bigdatamr:10000/默认值:********
已连接到:Apache Hive(版本1.2.0-
我想在HDFS中以Parquet.snappy格式编写Spark数据帧。目前,它正在创建默认的200个零件文件,即使表中的记录数较少
是可用的任意公式,该公式提供了大约数量的零件文件以HDFS格式写入,因此读取速度更快
理想情况下,零件文件大小应在50-200 MB之间。
我知道重新分区和合并功能会减少/增加零件文件的数量。我正在寻找数据帧需要重新分区的编号。基本上,您的数据帧中的部分文件与分区数量相同
如果确定总数据量,可以尝试使用合并或重新分区方法
我试图用Spark_Apply运行coxph()生存函数,但我得到了下面的错误
Error in file(con, "r") : cannot open the connection
In addition: Warning message:
In file(con, "r") :
cannot open file 'C:\Users\XXXX\AppData\Local\Temp\1\Rtmpusw8Aw\file344868ef1e07_spark.log': Permission d
y是所有行的集合,我希望将其拆分为N部分,而不是合并为一部分,以保留原始文件中的行。因此,如果当前,我的y值有10000个项目,我有10个文件。我希望y有10个项目,每个项目都是一个集合,包含该特定文件的行
我如何才能做到这一点?@asdasd2a43qaad
如果我理解正确,您可以使用map而不是x上的flatMap来实现这一点
y=x.map(lambda p:p.split('\n'))
希望这有帮助
files = sc.wholeTextFiles("/path/to/data*")
我目前有一个Spark数据框,有两列:
1) 每行包含预测特征向量的列
2) 包含要预测的值的列
为了识别在以后的模型中使用的最具预测性的特征,我使用了p值向后消除法,如所述。下面是我的代码:
num_vars = scoresDf.select("filtered_features").take(1)[0][0].__len__()
for i in range(0, num_vars):
model = LinearRegression(featuresCol="filtered_f
我使用的是spark-sql-2.4.1版本。我有一个类似下面的代码。
我有下面这样的场景
val superDataset = // load the whole data set of student marks records ... assume have 10 years data
val selectedYrsDataset = superDataset.repartition("--GivenYears--") //i.e. GivenYears are 2010,2011
O
我正在尝试使用结构化流从文件中读取一些数据,并最终将其写入Cassandra。然而,在卡桑德拉写作之前,我得到了下面的错误
"org.apache.spark.sql.AnalysisException: Queries with streaming sources must be executed with writeStream.start();;"
下面是我正在使用的代码片段
val ip15M = spark.readStream.schema(NewsSchema).parquet(
我能够从中成功构建示例项目
我还成功提交了dse spark submit。程序运行良好,结果与预期一致
dse spark提交——class com.datastax.spark.example.WriteRead目标/WriteRead-0.1.jar
现在,我希望将上述作业提交到dse.yaml中配置的现有池中
resource_manager_options:
worker_options:
cores_total: 6
memory_total: 32G
wor
我有一个拼花地板按以下方式分割:
data
/batch_date=2020-01-20
/batch_date=2020-01-21
/batch_date=2020-01-22
/batch_date=2020-01-23
/batch_date=2020-01-24
此处,作为分区列的batch_date为日期类型
我只想从最新的日期分区读取数据,但作为消费者,我不知道最新的值是什么
我可以用一个简单的小组
df.groupby().agg(max(col('batch_date')))
下面是我使用Jupyter笔记本中的Pyspark访问文本文件的代码。我正在Linux环境(Ubuntu)中运行Jupyter笔记本
当我尝试运行“result=ratings.countByValue()”时,我遇到下面的错误,即“java.io.IOException:无法运行程序“python”:错误=2,没有这样的文件或目录
Py4JJavaError回溯(最近一次调用)
在里面
1评级=lines.map(lambda x:x.split()[2])
2#评级。收集()
---->3结
我正在学习Spark,我有下面的xml,我想从中读取2个值并创建两个不同的列
<appRoot>
<applist>
<app type="test">
<code>8.52544</code>
</app>
<app type="dev">
<code>8.52537</code
我使用Log4j,火花在纱线上运行。当我尝试记录一些消息时,我可以在纱线stderr上看到日志,但在纱线stdout(纱线网)上看不到日志。我能做什么
@transient
val log = Logger.getLogger(this.getClass)
log.info("...")
log4j.rootLogger=ERROR,console
# add a ConsoleAppender to the logger stdout to write to the c
我正在尝试根据多个列与另一个表的匹配情况更新一个表。我已经尝试了下面显示的内容,但是我得到了显示的错误。这是怎么做到的
update my_table set flag = '1' where (patient_id, org) in (
select distinct (patient_id, org) from enc where lower(enc_type) like '%visit%'
)
错误:
Error in SQL statement: AnalysisException
默认情况下,纱线作业启动后,spark将每秒打印一次:
INFO yarn.Client: Application report for application_1603121715572_605013 (state: RUNNING)
是否可以将此更改为每30秒发生一次
我使用的是spark 1.4.0和graphx,我的图形边存储在文件中,我使用以下代码行
将它们存储在RDD中。我想使用EdgeRDD而不是RDD[Edge[String]]
val edges: RDD[Edge[String]] = edge_file.map(line => {val x = line.split("\\s+")
Edge(x(0).toLong, x(1).toLong, " "); })
我试过这个
val edgesRDD = EdgeRDD(edges)
在纱线簇模式下运行scala spark应用程序jar。它适用于独立群集模式和纱线客户端,但由于某些原因,它不能在纱线群集模式下运行到完成
细节
它似乎执行的代码的最后一部分是在读取输入文件时将初始值分配给数据帧。看起来在那之后它什么也没做。没有任何日志看起来异常,也没有警告或错误。它突然被取消注册,状态成功,所有东西都被杀死。在任何其他部署模式(例如,Thread客户端、独立集群模式)上,所有操作都可以顺利完成
15/07/22 15:57:00 INFO yarn.ApplicationMa
我试图通过JDBC编写:
df.write.jdbc("jdbc:postgresql://123.123.123.123:5432/myDatabase", "myTable", props)
说明如果在客户机模式(即Dataproc运行的模式)下运行,则配置选项spark.driver.extraClassPath不能用于添加JDBC驱动程序JAR,因为JVM已经启动
我尝试在Dataproc的submit命令中添加JAR路径:
gcloud beta dataproc jobs subm
我在集群模式下使用Spark 1.5而不使用HDFS来构建应用程序。我想知道,当进行保存操作时,例如
df.write.parquet("...")
哪些数据存储在哪里?是所有数据都存储在主节点上,还是每个工作节点都存储其本地数据?一般来说,所有工作节点都将执行对其本地文件系统的写入,而驱动程序只写入一个\u成功文件
我已经尝试升级到ApacheSpark1.6.0RC3。我的应用程序现在几乎在每项任务中都会出现以下错误:
Managed memory leak detected; size = 15735058 bytes, TID = 830
我已将org.apache.spark.memory.TaskMemoryManager的日志记录级别设置为DEBUG,并在日志中查看:
I2015-12-18 16:54:41,125 TaskSetManager: Starting task 0.0 in s
我尝试在Ubuntu 14.04上安装Apache Spark 1.5.2,步骤如下:
wget http://d3kbcqa49mib13.cloudfront.net/spark-1.5.2.tgz
tar xvf spark-1.5.2.tgz
cd spark-1.5.2/
./sbt/sbt assembly
但是我得到了这个构建错误:
[error] Server access Error: Connection timed out url=https://oss.sonatype
我有一个Spark作业,它在前半部分需要很大一部分执行器内存,在后半部分需要很大一部分用户内存。是否有任何方法可以在运行时动态更改Spark内存分数?Short:Spark.无法在运行时更改配置选项
再长一点:应该没有必要。如果使用最新的Spark(1.6或更高版本),则不推荐使用内存设置。您可以设置spark.memory.useLegacyMode,spark将完成其余的操作。您也检查了这一项吗?用户内存是什么意思?@Shankar据我所知,统一内存管理仅适用于RDD内存,即--spark.
我正在从AWS S3加载AVRO文件,并将它们写回拼花地板
from pyspark.sql import SparkSession
from pyspark.sql.types import *
spark = SparkSession.builder.appName("AvroParquet").enableHiveSupport().getOrCreate()
in_path = "s3://my-bucket/avro-path/*.avro"
out_path = "s3://my
我正在用Spark ML中的随机森林进行多类预测
对于spark ML中的MultiClassificationEvaluator(),是否可以通过每个类标签获得精度/召回率
目前,我只看到所有类的精度/召回率组合在一起。使用内置方法来看这似乎是不可能的
虽然不完全是您想要的,但您可以在metricName方法中使用weightedPrecision和weightedRecall。这至少可以解释类的不平衡。直接使用org.apache.spark.mllib.evaluation.Multicl
我有一个大的RDD(1gb)的纱线集群。在使用此群集的本地计算机上,我只有512MB。我想在本地机器上迭代RDD中的值。我不能使用collect(),因为它会在本地创建太大的数组,这比我的堆还要大。我需要一些迭代的方法。有方法iterator(),但它需要一些额外的信息,我无法提供
UDP:Committed ToLocalitor方法使用Spark映射/过滤/减少并稍后下载结果?我认为通常的Hadoop方法会奏效
Api说有map-filter-saveAsFile命令:使用Spark映射/f
标题几乎说明了一切
例如,在中,他们定义了这两种方法:
def rankLangsUsingIndex(index: RDD[(String, Iterable[WikipediaArticle])]): List[(String, Int)] = {
index.map(...)
.sortBy(pair => pair._2) // <- sortBy BEFORE collect
.collect()
.toList
.reverse
}
根据我的理解,整个作业中的每个操作都被转换为作业,而作业中的每个洗牌阶段被转换为阶段,每个阶段的每个分区输入都被转换为任务
如果我错了,请纠正我,我无法获得任何实际定义。在Spark应用程序中调用操作会触发启动Spark作业以完成它。Spark检查DAG并制定执行计划。执行计划包括将作业的转换组装到各个阶段
当Spark在内部优化代码时,它会将代码分为几个阶段,其中
每个阶段由许多小任务组成。每个阶段包含一系列转换,这些转换可以在不搅乱全部数据的情况下完成
给定阶段的每个任务都是由完全相同的线程
我发现很难将拼花地板文件加载到蜂窝表中。我正在Amazon EMR集群和spark上进行数据处理。但是我需要读取输出的拼花文件来验证我的转换。我有以下模式的拼花地板文件:
root
|-- ATTR_YEAR: long (nullable = true)
|-- afil: struct (nullable = true)
| |-- clm: struct (nullable = true)
| | |-- amb: struct (nullable = true)
我有一个Spark数据框,我想用它来运行一个简单的PCA示例。我已经看到并注意到这一点,因为它们将特征转换为向量:
from pyspark.ml.linalg import Vectors
>>> data = [(Vectors.sparse(5, [(1, 1.0), (3, 7.0)]),),
... (Vectors.dense([2.0, 0.0, 3.0, 4.0, 5.0]),),
... (Vectors.dense([4.0, 0.0, 0.
使用Spark进行模型训练,在训练期间更新广播参数,在每次迭代的前端,我使用
broadcast_params = sc.broadcast(params.collectAsMap())
...
update(params)
但是我发现collectamap()步骤的时间成本在增加。。。为什么会发生这种情况 collectAsMap将把结果提取到驾驶员侧。因此,如果结果的大小很大,则需要很长时间。你没有提到你在训练中使用的算法,我猜你使用了某种迭代算法,经过几轮迭代后,结果的大小会增加 我使用
在下面的代码段中,第二次聚合失败(不足为奇),原因是:
java.lang.ClassCastException:org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema无法强制转换为spark_test.Record
package spark\u测试
导入org.apache.spark.sql.expressions.Aggregator
导入org.apache.spark.sql.{DataFrame、编码器、编码器、
有人能帮我找出我到底在哪里丢失了这段代码吗?我无法将电话从字符串解析为整数
case class contactNew(id:Long,name:String,phone:Int,email:String)
val contactNewData = Array("1#Avinash#Mob-8885453419#avinashbasetty@gmail.com","2#rajsekhar#Mob-9848022338#raj@yahoo.com","3#kamal#Mob-98032446443
对于我的一个数据验证脚本,我正在输入数据帧上执行df.descripe(),以准备数据概要文件(其中df是我的输入数据帧)。对于3000列(但只有16条记录)的特定数据帧,此特定部分的平均时间为3分钟。当我检查spark历史记录时,该部分分两个阶段执行,每个阶段有一个任务。在事件时间线上,99.99%的时间作为“执行者计算时间”。随机写入和随机读取仅以kb为单位,甚至不需要毫秒完成。在检查此阶段的DAG执行流时,它给出了如下流程:
stage 1: (~1.4 min)
scan csv
可以使用getitemn检索数组类型列的第n项。映射类型的列可以使用getItemkey或“column.key”进行拆分。数组是否有类似的语法
上下文:目标是以可读的方式从大量嵌套的json中获取特定字段
from pyspark import SparkContext
from pyspark.sql import SparkSession
sc = SparkContext.getOrCreate()
spark = SparkSession(sc)
sample = spark.cr
我对数据库中的损坏记录有问题。我们希望统计损坏的记录,并将损坏的记录保存在特定位置作为增量表。
为此,我们使用PERMISSIVE进行阅读,并基于此_corrupt_record列进行查询
我们在Azure Databricks中将pyspark与Apache Spark 3.0.1一起使用
下面是我们得到的错误消息:
自Spark 2.3以来,来自原始
当引用的列仅包括时,不允许使用JSON/CSV文件
默认情况下,名为_corrupt_record的内部损坏记录列。
例如:
spark.re
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 494 页