问题标签 [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.
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 行。
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 中执行的代码
在尝试打开图表之前还尝试添加以下内容
包括图形连接配置以确保完整性
预期结果将是一个可用的遍历对象
下面的实际结果
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 以及我们如何解决这个问题。有没有办法将同一个会话用于多个工作。
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
每一行的返回?
csv - CSV 输出文件中未显示引号
初始数据在 Dataset<Row> 中,我正在尝试将每个单元格值写入 csv 文件以放在引号中。
预期输出:
电流输出:
星火版本是 2.3
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是做什么的,可以关闭吗?为了使文件存储上的时间分区数据的读取功能通用,是否有任何建议或最佳实践可以采用?
java - 使用 Spark 和 java 编写 CSV 文件 - 处理空值和引号
初始数据在 Dataset<Row> 中,我正在尝试写入管道分隔文件,我希望将每个非空单元格和非空值放在引号中。空值或 null 值不应包含引号
预期输出:
电流输出:
如果我将“quoteAll”更改为“true”,我得到的输出是:
Spark 版本是 2.3,java 版本是 java 8
java - Apache Spark 未连接到 Hive 元存储(未找到数据库)
我有一个 Java Spark 代码,我正在尝试连接 Hive 数据库。但它只有默认数据库并给了我 NoSuchDatabaseException。我尝试了以下设置配置单元元存储。
- 使用 Hive Metastore URI 在代码中添加 Spark conf
- 在 spark submit 中添加 Spark conf
- 在资源文件夹中添加 hive-site.xml
- 在 spark conf (/etc/spark2/conf/hive-site.xml) 中复制 hive-site.xml
此外,在运行时加载的配置文件与 (/etc/hive/conf/hive-site.xml) 相同
spark提交的日志如下。
请让我知道我哪里/哪里出错了。
提前致谢,
高瑟姆
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]) 不存在
那么如何解决这个问题呢?
dataframe - 如何将每列的两个数组转换为 Spark DataFrame 的一对?
我有一个 DataFrame,它有两列数组值,如下所示
我想将其转换为如下所示的对数组
我想我可以使用 struct 然后使用一些 udf。但我想知道是否有任何内置的高阶方法可以有效地做到这一点。