问题标签 [apache-spark-1.4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-s3 - 从 EMR Spark 到 S3 的 saveAsParquetFile 缓慢或不完整
我有一段代码可以创建 aDataFrame
并将其保存到 S3。下面创建DataFrame
1000 行和 100 列,由 填充math.Random
。我在一个有 4 个r3.8xlarge
工作节点的集群上运行它,并配置了大量的内存。我尝试了最大数量的执行器,每个节点一个执行器。
我的问题是我可以创建DataFrame
比保存到 S3 更大的内存。
比如可以构造和查询10亿行1000列,但是我用这种方式写S3的时候1亿行100列就失败了。我没有从 Spark 上下文中得到很好的消息,但是由于太多的任务失败了,所以作业会失败。
是否有一些配置可以更有效地保存文件?我应该以不同的方式配置 SparksaveAsParquetFile
吗?
这是来自执行程序的堆栈跟踪:
python - 带有交叉验证的 PySpark 管道中的自定义转换器
我写了一个自定义转换器,就像这里描述的那样。
在使用我的转换器创建管道作为第一步时,我能够训练一个(逻辑回归)模型进行分类。
但是,当我想像这样使用此管道执行交叉验证时:
我收到以下错误:
和 Python 堆栈跟踪:
我通过预先转换我的数据框来解决这个错误,即将我的变压器移出管道。但我真的很想将所有步骤都保留在处理管道中,这样我就可以在对看不见的数据进行分类时使用它,而无需任何前面的步骤,并且还能够调整特征提取参数。所以任何帮助表示赞赏。
scala - 从数据框列中选择值
我想计算同一列中两个值之间的差异。现在我只想要最后一个值和第一个值之间的差异,但是使用 last(column) 返回一个空结果。last() 有没有返回值的原因?有没有办法将我想要的值的位置作为变量传递;例如:第 10 次和第 1 次,还是第 7 次和第 6 次?
Current code
使用 Spark 1.4.0 和 Scala 2.11.6
myDF =
一些具有 n 行 x m 列的数据框
def difference(col: Column): Column = {
last(col)-first(col)
}
def diffCalcs(dataFrame: DataFrame): DataFrame = {
import hiveContext.implicits._
dataFrame.agg(
difference($"Column1"),
difference($"Column2"),
difference($"Column3"),
difference($"Column4")
)
}
当我运行diffCalcs(myDF)
它时,它会返回一个null
结果。如果我修改difference
为 only first(col)
,它会返回四列的第一个值。但是,如果我将其更改为last(col)
,它会返回null
。如果我调用myDF.show()
,我可以看到所有列Double
的每一行都有值,任何列中都没有null
值。
scala - Spark + Kafka 集成 - 将 Kafka 分区映射到 RDD 分区
我有几个与 Spark Streaming 相关的基本问题
[请让我知道这些问题是否已在其他帖子中得到回答 - 我找不到任何]:
(i) 在 Spark Streaming 中,RDD 中的分区数是否默认等于 worker 数?
(ii) 在 Spark-Kafka 集成的直接方法中,创建的 RDD 分区数等于 Kafka 分区数。假设每个 RDD 分区在每个批次中都i
映射到同一个工作节点是否正确?即,分区到工作节点的映射是否仅基于分区的索引?例如,分区 2 是否可以在一批中分配给工人 1,而在另一批中分配给工人 3?j
DStream
提前致谢
apache-spark - 无法启动火花壳
我正在使用 Spark 1.4.1。我可以毫无问题地使用 spark-submit。但是当我跑~/spark/bin/spark-shell
我收到以下错误,我已配置SPARK_HOME
和JAVA_HOME
. 但是,Spark 1.2 没问题
apache-spark - Spark 工作节点已移除但未消失
我正在使用 Spark 独立与一个主人和一个工人只是为了测试。起初我使用一个工人箱,但现在我决定使用不同的工人箱。为此,我停止了正在运行的 Master,我更改了 conf/slave 文件中的 IP,然后再次运行它。然而,老工人仍在装载。当我看到大师的8080。现在,我将放置在 conf/slaves 文件中的新文件和从 conf/slaves 中删除的旧文件都视为奴隶。
我不知道该怎么做并且已经搜索过但没有结果。
apache-spark - 火花:解码器异常:java.lang.OutOfMemoryError
我在具有 3 个工作节点的集群上运行 Spark 流应用程序。由于以下异常,有时作业会失败:
我以客户端模式提交作业,没有任何特殊参数。master和workers都有15g的内存。Spark 版本是 1.4.0。
这可以通过调整配置来解决吗?
json - 与 Spark 数据帧不一致的 JSON 模式猜测
尝试使用 Spark 1.4.1 数据帧读取 JSON 文件并在其中导航。似乎猜测的架构不正确。
JSON文件是:
火花代码是:
结果是:
很明显 TUPLE_CRA 是一个数组。我不明白为什么它没有被猜到。在我看来,推断的模式应该是:
有人有解释吗?如果 JSON 模式更复杂,有没有办法轻松地告诉 Spark 实际模式是什么?
python-2.7 - 工作节点和主节点中的 Python 版本不同
在 CentOS 6.7 上运行 spark 1.4.1。使用 anaconda 安装 python 2.7 和 python 3.5.1。
确保 PYSPARK_PYTHON env var 设置为 python3.5 但是当我打开 pyspark shell 并执行简单的 rdd 转换时,它会出错并出现以下异常:
例外:worker 中的 Python 2.7 版本与驱动程序 3.5 中的版本不同,PySpark 无法使用不同的次要版本运行
只是想知道改变路径的其他地方是什么。