问题标签 [apache-spark-1.3]

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.

0 投票
0 回答
2039 浏览

apache-spark - 无法通过 Spark 加载 Hive 表

我是 Spark 的新手,需要帮助来弄清楚为什么我的 Hive 数据库无法通过 Spark 执行数据加载。

背景:

  1. 我在一台机器上运行 Hive、Spark 和我的 Java 程序。它是 VirtualBox 上的 Cloudera QuickStart VM,CDH5.4x。

  2. 我已经下载了预构建的 Spark 1.3.1。

  3. 我正在使用与 VM 捆绑在一起的 Hive,并且可以通过 Spark-shell 和 Hive cmd 行运行 hive 查询而没有任何问题。这包括运行命令:

    /li>

问题:

我正在编写一个 Java 程序来从 Cassandra 读取数据并将其加载到 Hive 中。我已将 Cassandra 以镶木地板格式读取的结果保存在名为“result.parquet”的文件夹中。

现在我想将它加载到 Hive 中。为此,我

  1. 将 Hive-site.xml 复制到 Spark conf 文件夹。

    • 我对此xml进行了更改。我注意到我有两个 hive-site.xml - 一个是自动生成的,另一个具有 Hive 执行参数。我将两者合并为一个 hive-site.xml。
  2. 使用的代码(Java):

    /li>

所以,这行得通。我可以将数据加载到 Hive 中。除了,在我重新启动我的虚拟机后,它已经停止工作。

当我运行show databasesHive 查询时,我得到一个结果说

而不是 Hive 中的数据库,它们是

我还注意到在我的项目文件夹中创建了一个名为 metastore_db 的文件夹。通过谷歌搜索,我知道当 Spark 无法连接到 Hive 元存储时会发生这种情况,因此它会创建一个自己的元存储。我以为我已经解决了这个问题,但显然没有。

我错过了什么?

0 投票
0 回答
667 浏览

apache-spark - 启动 spark 远程元存储——来自 spark 的 Hive

我在使用 spark sql 时尝试使用远程元存储

--> 使用火花 1.3.1

--> 将 hive-site.xml 从 hive/conf 复制到 spark/conf

--> 使用 mysql 远程元存储

--> 将 mysql jar 添加到 commute-classpath.sh 和 lib

启动 spark-sql 时:

在 hive 中,我们从 hive --service metastore 开始

spark如何启动远程元存储???

0 投票
0 回答
806 浏览

apache-spark - Spark 1.3.0:ExecutorLostFailure 取决于输入文件的大小

我正在尝试在以独立模式设置的 2 节点集群上运行一个简单的 python 应用程序。一个主人和一个工人,而主人也扮演着工人的角色。

在下面的代码中,我试图计算 500MB 文本文件中出现的蛋糕数量,但它因 ExecutorLostFailure 而失败。

有趣的是,如果我采用 100MB 的输入文件,应用程序就会运行。

我将 CDH5.4.4 的包版本与 YARN 一起使用,并且正在运行 Spark 1.3.0。每个节点都有 8GB 内存,这些是我的一些配置:

  • 执行器内存:4g
  • 驱动内存:2g
  • 每个工人的核心数:1
  • 序列化器:Kryo

简单应用程序.py:

提交申请:

日志摘录:

有什么建议么?

0 投票
1 回答
566 浏览

apache-spark - Spark SQL + Window + Streaming 问题 - 使用 Spark Streaming 运行时,Spark SQL 查询需要很长时间才能执行

我们期待使用 Spark Streaming(使用 Flume)和带有窗口的 Spark SQL 实现一个用例,允许我们对一组数据执行 CEP 计算。(有关如何捕获和使用数据,请参见下文)。这个想法是使用 SQL 来执行一些符合某些条件的操作。. 基于每个传入事件批次执行查询似乎非常慢(随着它的进展)。

这里慢的意思是说我已经配置了 600 秒的窗口大小和 20 秒的批处理间隔。(以每 2 秒 1 次输入的速度泵送数据)所以说在 10 分钟后输入输入将保持不变的时间应该需要相同的时间来执行 SQL 查询。

但是在这里,经过一段时间后,它开始花费更多时间并逐渐增加,因此对于大约 300 条记录,select count(*) 查询最初需要 1 秒,然后在 15 分钟后开始需要 2 到 3 秒并逐渐增加。

如果有人能提出更好的方法来实现这个用例,我将不胜感激。以下是我们为实现这一目标而执行的步骤 -

0 投票
3 回答
7035 浏览

scala - 为什么 Spark 尝试发送 GetMapOutputStatuses 时会报“与 MapOutputTracker 通信时出错”?

我正在使用 Spark 1.3 对大量数据进行聚合。这项工作包括 4 个步骤:

  1. 读取一个大(1TB)的序列文件(对应1天的数据)
  2. 过滤掉大部分并获得大约 1GB 的随机写入
  3. keyBy客户
  4. aggregateByKey() 到为该客户构建配置文件的自定义结构,对应于每个客户的 HashMap[Long, Float]。长键是唯一的,并且从不大于 50K 不同的条目。

我正在使用以下配置运行它:

并得到这个错误:

该作业和逻辑已被证明可以与一个小型测试集一起使用,我什至可以在某些日期运行该作业,但不能在其他日期运行。我搜索了一下,发现提示“与 MapOutputTracker 通信时出错”与内部 Spark 消息有关,但我已经增加了“spark.akka.frameSize”、“spark.akka.timeout”和“spark.akka.askTimeout”(最后一个甚至没有出现在 Spark 文档中,但在 Spark 邮件列表中被提及),但无济于事。在 30 秒时仍有一些超时,我不知道如何识别或修复。

我认为没有理由因为数据大小而失败,因为过滤操作和 aggregateByKey 执行本地部分聚合的事实应该足以解决数据大小问题。任务的数量是 16K(从原始输入自动),比在 100 个执行器上运行的 800 个内核要多得多,所以它不像通常的“增量分区”技巧那么简单。任何线索将不胜感激!谢谢!

0 投票
1 回答
2641 浏览

scala - 'spark.driver.maxResultSize' 的范围

我正在运行 Spark 作业来聚合数据。我有一个名为 Profile 的自定义数据结构,它基本上包含一个mutable.HashMap[Zone, Double]. 我想使用以下代码合并所有共享给定密钥(UUID)的配置文件:

奇怪的是,Spark 失败并出现以下错误:

org.apache.spark.SparkException:作业因阶段故障而中止:116318 个任务的序列化结果的总大小(1024.0 MB)大于 spark.driver.maxResultSize(1024.0 MB)

显而易见的解决方案是增加“spark.driver.maxResultSize”,但有两件事让我感到困惑。

  1. 我得到的 1024.0 大于 1024.0 太巧合了
  2. 我在谷歌上搜索此特定错误和配置参数时发现的所有文档和帮助表明它会影响将值返回给驱动程序的函数。(比如说take()collect()),但我没有向驱动程序带任何东西,只是从 HDFS 读取、聚合、保存回 HDFS。

有谁知道我为什么会收到这个错误?

0 投票
1 回答
15171 浏览

scala - 将 ArrayBuffer 转换为 DataFrame 中的 HashSet 到 Hive 表中的 RDD 时的 GenericRowWithSchema 异常

我有一个镶木地板格式的 Hive 表,它是使用生成的

我能够验证它是否已填充 - 这是一个示例值

我希望将其放入表单的 Spark RDD

现在,使用 spark-shell(我在 spark-submit 中遇到了同样的问题),我用这些值做了一个测试 RDD

使用迭代器,我可以将 ArrayBuffer 转换为以下新 RDD 中的 HashSet:

但是,当我尝试对带有 HiveContext / SQLContext 的 DataFrame 执行完全相同的操作时,我收到以下错误:

请注意,当我使用 spark-submit 在已编译的程序中运行它时,我得到了同样的错误“GenericRowWithSchema 无法转换为 scala.Tuple2”。程序在遇到转换步骤时在运行时崩溃,并且我没有编译器错误。

对我来说,我的人工生成的 RDD“tempRDD”可以与转换一起工作,而 Hive 查询 DataFrame->RDD 却没有,这对我来说似乎很奇怪。我查了一下,两个 RDD 的形式相同:

唯一的区别是他们最后一步的起源。在运行 tempRDD2 和 tempRDD3 的步骤之前,我什至尝试对这些 RDD 进行持久化、检查点和具体化。所有人都收到了相同的错误消息。

我还阅读了相关的 stackoverflow 问题和 Apache Spark Jira 问题,并从中尝试将 ArrayBuffer 转换为 Iterator,但在第二步中也失败了,并出现相同的错误。

有谁知道如何正确地将 ArrayBuffers 转换为来自 Hive 表的 DataFrames 的 HashSets?由于该错误似乎仅针对 Hive 表版本,因此我很容易认为这是 SparkSQL 中 Spark/Hive 集成的问题。

有任何想法吗?

我的 Spark 版本是 1.3.0 CDH。

以下是 printSchema 结果:

0 投票
2 回答
982 浏览

apache-spark - 如何将 temptable 保存到 Hive 元存储(并在 Hive 中对其进行分析)?

我使用 Spark 1.3.1。

如何将 DataFrame 数据存储/保存到 Hive 元存储?

在 Hive 中,如果我运行show tablesDataFrame 不会在 Hive 数据库中显示为表。我已经复制hive-site.xml$SPARK_HOME/conf,但它没有帮助(数据框也没有出现在 Hive 元存储中)。

我正在关注这个文档,使用 spark 1.4 版本。

如何分析 Hive 中的 spark 表?

0 投票
2 回答
750 浏览

hadoop - Spark 需要 2 秒才能数到 10 ...?

我们只是在试用 Spark,事实证明它真的很慢。为了说明我的意思,我在下面给出了一个示例 - Spark 需要将近 2 秒的时间从 HDFS 加载一个包含 10 行的文本文件,并计算行数。我的问题:

  1. 这是预期的吗?您的平台需要多长时间?
  2. 任何可能的想法为什么?目前我在一个两节点 Hadoop 集群(都是 8 个内核,64G RAM)上使用 Spark 1.3。在 Hadoop 和 Spark 方面,我非常熟悉,所以除了 Ambari/HDP 默认值之外,我几乎没有做任何配置。

最初我在测试一亿行——Spark 花了大约 10 分钟来简单地计算它。

例子:

创建 10 个数字的文本文件,并将其加载到 hadoop:

启动 pyspark(大约需要 20 秒...):

从 HDFS 加载文件并计数:

根据反馈,Spark 大约需要 1.6 秒才能完成此操作。即使配置很糟糕,我也不认为需要那么长时间。

0 投票
3 回答
46409 浏览

python - Pyspark数据框:对一列求和,同时对另一列进行分组

我有一个如下的数据框

我想做的是为第一列的每个不同值计算第二列对应值的总和。我尝试使用以下代码执行此操作:

这给出了一个输出

我不太确定它是否做对了。为什么它不显示第一列的信息?提前感谢您的回答