问题标签 [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.
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")
)到我的问题中。
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?
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.
apache-spark - Spark - 不允许操作:alter table replace columns
看起来 hivereplace columns
不适用于 spark 2.2.1 和 2.3.1
看起来它已在ADD COLUMNS
2.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
java - 在 Apache Spark 中跨执行程序共享数据
我的 SPARK 项目(用 Java 编写)需要跨执行程序访问(SELECT 查询结果)不同的表。
解决此问题的一种方法是:
- 我创建一个 tempView
- 选择所需的列
- 使用forEach转换
DataFrame
为Map
. - 将该映射作为广播变量传递给执行程序。
但是,我发现
- 有许多复杂的查询,其结果不能直接存储在
Map
- 表非常大,因此创建
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
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 节点。
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
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
pyspark - 将“[1, 2, 3]”之类的字符串转换为数组
很简单。我有一个类似数组的列,编码为字符串varchar
(array
explode
两种最自然的方法似乎不起作用:
获得我想要的东西的丑陋/不优雅/迂回的方式是:
(regexp_replace
可以包含这两者replace
,但带方括号的正则表达式总是很痛苦;ltrim
或者rtrim
也trim(BOTH '[]'...)
可以使用)
有没有更简洁的方法来解决这个问题?我在 Spark 2.3.1 上。
pandas - 将 pyspark 数据帧转换为 pandas 数据帧
我有 pyspark 数据框,其维度为 (28002528,21) 并尝试使用以下代码行将其转换为 pandas 数据框:
我收到了这个错误:
第一部分
第二部分
我还尝试对原始 pyspark 数据框进行采样
我收到一个错误,看起来只是上一个错误的第一部分