问题标签 [apache-spark-2.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 回答
88 浏览

pyspark - 在 pyspark sql 中使用相关子查询

Tab1 列[F,S,E]

Tab2 列[F,S]

仅当 F->S 关系存在于 Tab2 时,才从 TAB1 中取行

结果列[F,S,E]

我现在有查询,但无法使用 pyspark 获得结果。我能够在 MySql db 上运行。

我尝试在 spark 2.4.3 中使用相关子查询,但这会返回 0 行。

0 投票
1 回答
518 浏览

java - Janusgraph 库无法在 kerberos 环境中与 hbase 通信(无法指定服务器的 Kerberos 主体名称)

尝试在 kerberos hadoop 集群中使用 janusgraph 连接到 habse 时出现“无法指定服务器的 Kerberos 主体名称”

首先是一些环境信息 -
操作系统:7.6.1810
Java:1.8.0_191-b12
Spark:2.3.2.3.1.0.78-4
YARN:2.5.0
Hbase:2.0.2.3.1.0.78-4
Hadoop:3.1。 1.3.1.0.78-4
Kerberos:5 版本 1.15.1
Janusgraph:0.4.0

我做了 kinit 并测试了捆绑的 gremlin 客户端,以确保 env 的 graph.properties 有效。它能够连接起来创建一个简单的测试图,添加一些顶点,重新启动并检索存储的数据。捆绑的副本很酷。

为了懒惰/简单,我决定用 janusgraph 库加载 spark-shell。在尝试连接到同一个图时,它开始抛出 kerberos 错误。

首先想到的可能是它的 hadoop/spark lib/conf 冲突(非常典型)。所以构建了一个非常简单和准系统的java应用程序,试图看看它是否可以工作。得到与火花相同的错误。

Spark 调用 - 第一次尝试:

第二次尝试(更少的库):

Java 尝试:

至于在 spark-shell 或 java 中执行的代码

在尝试打开图表之前还尝试添加以下内容

包括图形连接配置以确保完整性

预期结果将是一个可用的遍历对象
下面的实际结果

0 投票
1 回答
961 浏览

scala - 执行多个 Spark 作业

我正在运行具有以下集群和应用程序配置的 Spark 作业:

总节点:3 Master Node Memory 7.5GB, 2 Cores Worker Node1, Memory 15GB, 4 Cores Worker Node2, Memory 15GB, 4 Cores

应用程序配置:

我正在尝试使用同一用户同时提交多个作业,但是我看到只有前两个提交的作业正在执行,第三个必须等待后续的交战。

我发现正在为每个提交的作业创建 SparkUI,而我的集群一次只接受两个作业。此外,我观察到,一旦第一个提交的作业完成执行,它就会在端口 4042 上获取第三个作业。我的集群一次只接受两个工作可能有什么问题?

这是我的 Spark 会话代码:

我的进一步问题是:为什么 SparkSession 为每个作业创建 SparkUI 以及我们如何解决这个问题。有没有办法将同一个会话用于多个工作。

0 投票
1 回答
601 浏览

pyspark - pyspark 映射数据帧中的每一行并应用返回数据帧的 UDF

我有dataframe几行。我可以dataframe使用以下代码循环遍历它:

for row in df.rdd.collect():

但这不会并行工作吗?所以我想要的是映射每一行并将其传递给 UDF 并根据行中的值返回另一个新的数据帧(来自数据库)。

我试过 df.rdd.map(lambda row:read_from_mongo(row,spark)).toDF()

但我得到了这个错误:

_pickle.PicklingError:无法序列化对象:异常:您似乎正试图从广播变量、操作或转换中引用 SparkContext。SparkContext 只能在驱动程序上使用,不能在它在工作人员上运行的代码中使用。有关详细信息,请参阅 SPARK-5063。

如何dataframe并行循环 a 并保持dataframe每一行的返回?

0 投票
2 回答
87 浏览

csv - CSV 输出文件中未显示引号

初始数据在 Dataset<Row> 中,我正在尝试将每个单元格值写入 csv 文件以放在引号中。

预期输出:

电流输出:

星火版本是 2.3

0 投票
2 回答
536 浏览

apache-spark - 优化读取数据以从 Azure blob 触发

我们有数据驻留在 Azure blob 存储中的表中,该表充当数据湖。每 30 分钟摄取一次数据,因此在 UTC 中形成如下时间分区

用于捕获数据的文件格式是 orc,并且时间分区内的数据分区大小相同。

我们的用例是使用 Spark(V 2.3)在 IST 中捕获日级别的数据进行处理。鉴于数据驻留在 UTC 并且用例是在 IST(+5.30 UTC)中处理数据,从 /h=18/min=30(前一天)到 /h=18/min= 总共 48 个时间分区是必不可少的00(第二天)。我们有两种选择

选项1 为每个时间分区创建数据帧并将其合并

对 48 个分区执行此操作将在 df 中生成一整天的数据。

选项 2 在日级别捕获数据并应用一个小时的过滤条件。

一旦数据被加载到内存中,处理时间是相同的,即~5 分钟。加载数据所需的时间是瓶颈。选项 1 需要 30 分钟,选项 2 需要 2 分钟才能加载到内存。

在一些博客中,我们看到 Analyzer 每次调用 union 时都会扫描整个先前的数据帧。因此对于 48 个联合,它扫描 1+2+3+47=1128 次。这是指数性能下降的原因吗?Analyzer是做什么的,可以关闭吗?为了使文件存储上的时间分区数据的读取功能通用,是否有任何建议或最佳实践可以采用?

0 投票
3 回答
1468 浏览

java - 使用 Spark 和 java 编写 CSV 文件 - 处理空值和引号

初始数据在 Dataset<Row> 中,我正在尝试写入管道分隔文件,我希望将每个非空单元格和非空值放在引号中。空值或 null 值不应包含引号

预期输出:

电流输出:

如果我将“quoteAll”更改为“true”,我得到的输出是:

Spark 版本是 2.3,java 版本是 java 8

0 投票
0 回答
1157 浏览

java - Apache Spark 未连接到 Hive 元存储(未找到数据库)

我有一个 Java Spark 代码,我正在尝试连接 Hive 数据库。但它只有默认数据库并给了我 NoSuchDatabaseException。我尝试了以下设置配置单元元存储。

  1. 使用 Hive Metastore URI 在代码中添加 Spark conf
  2. 在 spark submit 中添加 Spark conf
  3. 在资源文件夹中添加 hive-site.xml
  4. 在 spark conf (/etc/spark2/conf/hive-site.xml) 中复制 hive-site.xml

此外,在运行时加载的配置文件与 (/etc/hive/conf/hive-site.xml) 相同

spark提交的日志如下。

请让我知道我哪里/哪里出错了。

提前致谢,

高瑟姆

0 投票
1 回答
469 浏览

apache-spark - HDFS中的Pyspark重命名文件

我正在使用 spark 2.3.1 并想在 pyspark 程序中重命名 HDFS 文件。我正在关注这个答案[ https://stackoverflow.com/a/58172249/12927963](Pyspark

对于这条线

fs.rename(路径(hdfs_dir+''+file_name),路径(hdfs_dir+''+new_filename))

我得到以下错误。

NameError:名称“路径”未定义

如果我从行中删除 Path 关键字

我收到以下错误。

Py4JError:调用 o562.rename 时出错。Trace: py4j.Py4JException: Method rename([class java.lang.String, class java.lang.String]) 不存在

那么如何解决这个问题呢?

0 投票
2 回答
380 浏览

dataframe - 如何将每列的两个数组转换为 Spark DataFrame 的一对?

我有一个 DataFrame,它有两列数组值,如下所示

我想将其转换为如下所示的对数组

我想我可以使用 struct 然后使用一些 udf。但我想知道是否有任何内置的高阶方法可以有效地做到这一点。