问题标签 [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 回答
2086 浏览

apache-spark - Spark spark.sql.session.timeZone 不适用于 JSON 源

从 JSON 文件读取时,Spark v2.3.1 是否依赖于本地时区?

我的src/test/resources/data/tmp.json

和火花代码:

结果:

如何使火花返回1970-01-01 00:00:00.000

PS这个问题不是Spark Structured Streaming automatically converts timestamp to local time的副本,因为提供的解决方案对我不起作用并且已经包含(见.config("spark.sql.session.timeZone", "UTC"))到我的问题中。

0 投票
2 回答
1943 浏览

apache-spark - 无法将表保存到配置单元元存储,HDP 3.0

我不能再使用 Metastore 将表保存到配置单元数据库。我在使用 spark 中看到表,spark.sql但在 hive 数据库中看不到相同的表。我试过了,但它没有将表存储到蜂巢中。如何配置 hive 元存储?火花版本是 2.3.1。

如果您想了解更多详细信息,请发表评论。

@catpaws 回答后更新:HDP 3.0 及更高版本,Hive 和 Spark 使用独立目录

将表保存到 spark 目录:

VS

将表保存到 hive 目录:

正如您以这种方式看到的那样,Hive 仓库连接器对于具有数百列的数据框非常不切实际。有没有办法将大型数据帧保存到 Hive?

0 投票
0 回答
480 浏览

apache-spark - Different behaviour of cache method for PySpark dataframes in Spark 2.3

After Spark upgrade from 2.1 to 2.3 I have issues with cached PySpark dataframes. In Spark 2.1 cache() method worked for me as deep copy even though it shouldn't worked like that based on the documentation.

Example:

This is a minimal example to produce my problem.

And now, in Spark 2.1 inc_tbl has been just saved to the inc_tbl with all new records (from the current day) with the data that was there in the moment of cache method usage and this is what I want to have. In Spark 2.3 there is something that calculates all transformations from the beginning again so checking that snpsht_tbl table already has records from the current date so just inserting records that were there before processing.

0 投票
1 回答
2865 浏览

apache-spark - Spark - 不允许操作:alter table replace columns

看起来 hivereplace columns不适用于 spark 2.2.1 和 2.3.1

看起来它已在ADD COLUMNS2.2 版本以后修复。它也适用于我,但replace columns仍然失败。

不允许的操作:alter table add columns(line 1, pos 0)

以下文档说应该支持它。不知道为什么它对我来说失败了。 https://spark.apache.org/docs/2.2.0/sql-programming-guide.html#supported-hive-features

https://docs.databricks.com/spark/latest/spark-sql/language-manual/alter-table-or-view.html#replace-columns

0 投票
1 回答
499 浏览

java - 在 Apache Spark 中跨执行程序共享数据

我的 SPARK 项目(用 Java 编写)需要跨执行程序访问(SELECT 查询结果)不同的表。

解决此问题的一种方法是:

  1. 我创建一个 tempView
  2. 选择所需的列
  3. 使用forEach转换DataFrameMap.
  4. 将该映射作为广播变量传递给执行程序。

但是,我发现

  1. 有许多复杂的查询,其结果不能直接存储在Map
  2. 表非常大,因此创建Map大尺寸并将其作为广播变量传递给执行程序听起来效率不高。

load相反,我们可以使用可以在执行程序之间共享的内存中加载表吗?

void org.apache.spark.sql.Dataset.createOrReplaceTempView(String viewName)

或者void org.apache.spark.sql.Dataset.createGlobalTempView(String viewName) throws AnalysisException

方法对这个目的有用吗?

火花版本:2.3.0

0 投票
1 回答
258 浏览

apache-zeppelin - 如何使用内置 spark 2.3.2 构建 zeppelin 0.8.0

我想用内置的 spark 2.3.2 构建 zeppelin 0.8.0,并在不设置 SPARK_HOME 的情况下针对不在本地运行的相同版本的 spark 运行它,这样我就不需要在 zeppelin 节点中安装 SPARK。我已经尝试了文档https://zeppelin.apache.org/docs/0.8.0/setup/basics/how_to_build.html中给出的构建选项,但它在尝试为 scala 2.10 构建时失败了。

这在 0.8.0 版本中是否可行?

因此,您可以使用 spark 2.3.2 构建 0.8.1-snapshot。但是,如果不使用 SPARK_HOME 提供单独的 spark 安装,则无法使用内置 spark 二进制文件连接到外部 spark 节点。

0 投票
1 回答
661 浏览

hadoop - 无法查询/选择通过 Spark SQL 插入的数据

我正在尝试将数据插入到具有分区的 Hive 托管表中。

显示创建表输出以供参考。

尝试执行 SQL 语句将记录插入到部分表中,如下所示

如果没有插入语句,如果我们运行选择查询然后得到以下数据。

早些时候我在插入托管表时遇到错误。但是在重新启动 Hive & Thrift 服务后,现在执行作业没有错误,但在通过直线/程序进行选择查询时无法看到那些插入的数据。我可以看到带有增量文件的分区也插入了配置单元/仓库,请参见下面的屏幕截图。 在此处输入图像描述

此外,我可以看到一些警告如下,不确定它是否与错误有关。

还要注意:如果我使用外部表,那么它工作正常,也可以查看数据

我们正在使用 Azure HDInsight Spark 2.3(HDI 4.0 预览版)集群和以下服务堆栈。

HDFS:3.1.1

蜂巢:3.1.0

火花2:2.3.1

0 投票
2 回答
2948 浏览

python-2.7 - 在 spark 数据帧上使用 persist() 什么时候性能不实用?

在努力提高代码性能时,因为我有许多作业失败(中止),persist()当我需要在许多其他操作上使用相同的数据帧时,我考虑在 Spark Dataframe 上使用函数。在执行此操作并跟踪 Spark 应用程序 UI 中的工作和阶段时,我觉得这样做并不总是最佳的,这取决于分区的数量和数据大小。直到我因为坚持阶段的失败而中止了工作,我才确定。

我质疑在数据帧上执行许多操作时使用的最佳实践persist()是否始终有效? 如果不是,什么时候不是?如何判断?

更具体地说,我将介绍我的代码和中止工作的详细信息:

你可能会问我为什么坚持spark_df?这是因为我将多次使用它,例如 withproducts_df和 in joins(例如:spark_df = spark_df.join(df_products_indexed,"product_id")

工作阶段

第 3 阶段失败原因的详细信息:

作业因阶段故障而中止:阶段 3.0 中的任务 40458 失败 4 次,最近一次失败:阶段 3.0 中丢失任务 40458.3(TID 60778,xx.xx.yyyy.com,执行程序 91):ExecutorLostFailure(执行程序 91 因一个原因退出正在运行的任务)原因:从机丢失驱动程序堆栈跟踪:

输入数据的大小(4 TB)很大,在坚持之前有没有办法检查数据的大小?它是选择坚持还是不坚持的参数?还有大于 100,000的分区(任务)数persist

0 投票
1 回答
167 浏览

pyspark - 将“[1, 2, 3]”之类的字符串转换为数组

很简单。我有一个类似数组的列,编码为字符串varchararrayexplode

两种最自然的方法似乎不起作用:

获得我想要的东西的丑陋/不优雅/迂回的方式是:

regexp_replace可以包含这两者replace,但带方括号的正则表达式总是很痛苦;ltrim或者rtrimtrim(BOTH '[]'...)可以使用)

有没有更简洁的方法来解决这个问题?我在 Spark 2.3.1 上。

0 投票
2 回答
6684 浏览

pandas - 将 pyspark 数据帧转换为 pandas 数据帧

我有 pyspark 数据框,其维度为 (28002528,21) 并尝试使用以下代码行将其转换为 pandas 数据框:

我收到了这个错误:

第一部分

第二部分

我还尝试对原始 pyspark 数据框进行采样

我收到一个错误,看起来只是上一个错误的第一部分