问题标签 [apache-spark-2.2]

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 投票
1 回答
1130 浏览

apache-spark - Spark 2.x - 如何生成简单的解释/执行计划

我希望在 Spark 2.2 中生成一个解释/执行计划,并对数据帧进行一些操作。这里的目标是在我开始工作并消耗集群资源之前确保分区修剪按预期进行。我在这里尝试了 Spark 文档搜索和 SO 搜索,但找不到适合我情况的语法。

这是一个按预期工作的简单示例:

这是一个未按预期工作但希望开始工作的示例:

这是一个更详细的示例,以进一步展示我希望通过解释计划确认的分区修剪的最终目标。

提前感谢您的任何想法/反馈。

0 投票
0 回答
30 浏览

python - 我面临 pyspark2.2 csv writer 输出的问题

我想将我的 pyspark 代码从 1.6 迁移到 2.x。在 1.6 中,我使用的是语法

并以以下格式输出。

部分-00000

部分 00001

. .

我在 pyspark2.2 中运行了相同的代码,它给了我不同的部分文件名

部分-00000-2feefae7-47d7-4f1a-ade6-7dbd07f42f54-c000.csv

部分-00001-2feefae7-47d7-4f1a-ade6-7dbd07f42f54-c000.csv

然后我按照 2.x 更改代码

但还是一样的结果

部分-00000-2feefae7-47d7-4f1a-ade6-7dbd07f42f54-c000.csv

任何人都可以帮助为什么会发生这种情况?

0 投票
0 回答
186 浏览

scala - 通过 spark-shell 进行 Hadoop Config 设置似乎没有效果

我正在尝试通过 spark shell 编辑 hadoop 块大小配置,以便生成的镶木地板零件文件具有特定大小。我尝试以这种方式设置几个变量:-

测试文件是一个将近 3.5 GB 的大文本文件。但是,无论我指定什么块大小或采用什么方法,创建的零件文件的数量和它们的大小都是相同的。我可以更改使用 repartition 和 coalesce 函数生成的部分文件的数量,但我必须使用不会以任何方式打乱数据框中的数据的方法!

我也尝试过指定

f.write.option("parquet.block.size", 1048576).parquet("/path/to/output")

但没有运气。有人可以强调我做错了什么吗?还有我可以使用的任何其他方法可以改变写入hdfs的镶木地板块大小吗?

0 投票
0 回答
2314 浏览

kerberos - 用于 spark2 作业的 Kudu 中的 kerberos 身份验证

我正在尝试将一些数据放入 kudu 中,但工作人员找不到 kerberos 令牌,因此我无法将一些数据放入 kudu 数据库中。

在这里你可以看到我的 spark2-submit 声明

例外情况如下:

看来 kudu 客户端没有找到 keytab 文件。在他们提到的 kudu 文档中,您只需要指定keytabprincipal参数。

如果您在驱动程序中的 KuduClient 上执行 openTable,则一切正常。

0 投票
2 回答
3446 浏览

pyspark - Spark 2.2 无法从 unix_timestamp 提取日期

在 Spark 2.2 中,无法从 unix_timestamp 输入数据中提取日期:

我尝试了以下方法,但输出 Im getting as null

查询累了:

火花 sql

DSL:

预期输出:

0 投票
0 回答
762 浏览

scala - 如何防止 Apache Spark 多次读取 JDBC DataFrame?

我必须使用带有 Spark (2.2) 的 JDBC 从 Oracle 数据库中读取数据。为了最小化传输的数据,我使用了一个下推查询,它已经过滤了要加载的数据。然后将该数据附加到现有的 Hive 表中。为了记录已加载的内容,我计算了通过 JDBC 加载的记录。我的代码基本上是这样的:

我的假设是,由于 cache(),DataFrame 通过 JDBC 读取一次,保存并用于计算记录。但是当我查看在 Oracle 中创建的会话时,我看起来像是计数操作本身在 Oracle 数据库上创建了 10 个会话。起初我看到 10 个会话,基本上是这样的:

并且,在完成之后,另外 10 个会话看起来像这样:

因此,看起来 Spark 从 JDBC 源加载数据只是为了计算记录,而使用已经加载的数据应该已经足够了。如何防止这种情况发生并且 Spark 只能从 JDBC 源读取一次数据?


更新

事实证明,我是盲目的:在调用 saveAsTable 之前,我的代码中有另一个 count() 。所以这完全有道理,在 DataFrame 上调用的第一个动作确实是 count()。消除这一点后,它的行为与预期的一样。

0 投票
1 回答
69 浏览

apache-spark-sql - 使用 oozie 操作执行 spark sql 作业的问题

面对一个奇怪的问题,尝试spark-sql(Spark2)使用oozie action但执行的行为很奇怪,有时它执行得很好,但有时它会Running永远处于“”状态,在检查日志时遇到了以下问题。

奇怪的是我们已经提供了足够的资源,从spark环境变量和集群资源下也可以看出这一点(集群有足够的核心和RAM)。

使用相同的配置,有时它也可以正常执行。我们错过了什么吗?

0 投票
1 回答
1140 浏览

apache-spark - 如何使用 SparkSession 创建 emptyRDD -(因为不推荐使用 hivecontext)

在 Spark 版本 1.*

创建如下 emptyRDD:

迁移到 Spark 2.0 时(因为 hiveContext 已被弃用,使用 sparkSession)

尝试过:

虽然得到以下错误:

org.apache.spark.SparkException:此 JVM 中只能运行一个 SparkContext(请参阅 SPARK-2243)

有没有办法使用 sparkSession 创建 emptyRDD?

0 投票
1 回答
13508 浏览

scala - Spark(scala API)中的时间戳格式和时区

******* 更新 ********

正如评论中所建议的,我消除了代码中不相关的部分:

我的要求:

  1. 将毫秒数统一为 3
  2. 将字符串转换为时间戳并将值保留为 UTC

创建数据框:

这里使用 spark shell 的结果:

在此处输入图像描述

************ 结束更新 *********************************

尝试使用 scala 在 Spark 中处理时区和时间戳格式时,我很头疼。

这是我的脚本的简化以解释我的问题:

这是生成的架构:

然后我只选择 Timestamp 字段如下

不同毫秒长度的时间戳

我要修复的第一件事是每个时间戳的毫秒数并将其统一为三个。

我应用 date_format 如下

毫秒统一但时区改变

毫秒格式是固定的,但时间戳从 UTC 转换为本地时间。

为了解决这个问题,我将 to_utc_timestamp 与我的本地时区一起应用。

to_utc_timestamp 输出

更糟糕的是,不会返回 UTC 值,并且会丢失毫秒格式。

任何想法如何处理这个?我会很感激

BR。保罗

0 投票
1 回答
753 浏览

pyspark - 如何通过pyspark将特定行和列从excel表加载到HIVE表?

我有一个包含 4 个工作表的 excel 文件。每个工作表的前 3 行为空白,即数据从第 4 行开始,并持续到数千行。注意:根据要求,我不应该删除空白行。

我的目标如下

注意:我可以灵活地为每个工作表编写单独的代码。

我怎样才能做到这一点?

我可以创建一个 Df 来读取单个文件并将其加载到 HIVE。但我想我的要求还不止这些。