问题标签 [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 投票
1 回答
836 浏览

python - 重新分区 pyspark 数据帧失败以及如何避免初始分区大小

我正在尝试通过在 spark 数据帧上使用分区来调整 spark 的性能。这是代码:

在执行期间,first()我检查了 Spark UI 中的作业阶段,在这里我发现了什么: 工作详情 阶段 7 细节

  • 为什么舞台上没有repartition台阶?
  • 为什么还有第8阶段?我只请求了一项操作first()。是因为 shuffle 造成的repartition吗?
  • 有没有办法更改镶木地板文件的重新分区而不必进行此类操作?最初当我阅读时,df您可以看到它已分区超过 43k 分区,这确实很多(与我将其保存到 csv 文件时的大小相比:4 MB 和 13k 行)并在进一步的步骤中产生问题,这就是为什么我想重新分区它。
  • 我应该cache()在重新分区后使用吗?df = df.repartition(10).cache()? 当我df.first()第二次执行时,我也得到了一个带有 43k 分区的预定阶段,尽管 df.rdd.getNumPartitions()它返回了 10 个。编辑:分区的数量只是为了尝试。我的问题旨在帮助我了解如何进行正确的重新分区。

注意:最初 Dataframe 是从 Hadoop 中的一系列 parquet 文件中读取的。

我已经将此作为参考阅读Spark partition(ing) 如何处理 HDFS 中的文件?

0 投票
1 回答
2174 浏览

python-2.7 - 使用现有列在 pyspark 数据框中创建新列

我正在尝试使用 pyspark 数据框,我想知道如何使用现有列创建和填充新列。

假设我有一个如下所示的数据框:

我正在寻找创建如下数据框的方法:

_4 只是从 _1 中删除了“-”,而 _5 使用了 _1 和 _3 中的值

  • 我正在使用 spark-2.3.3 和 python 2.7

谢谢!

0 投票
1 回答
500 浏览

apache-spark - Spark - 主题建模没有剩余磁盘空间

我在具有 64gb RAM、32 个内核和 500GB 磁盘空间的系统上运行 Jupyter notebook。

大约 700k 文档将被建模为 600 个主题。词汇量为48000字。使用了 100 次迭代。

运行 10 小时后出现磁盘配额超出错误

0 投票
1 回答
1531 浏览

python - Pyspark 将 StructType 列聚合为每行的元素数组

我正在尝试做一些看起来非常简单但不知怎么用 pyspark 做的事情。

我有一个带有两列的df(为了简化)'id'和'strcol',可能有重复的id

我想做一个 df.groupBy('id') ,它将为每个 id 返回 strcol 值的数组

简单的例子:

我尝试将 apply 与 pandas udf 一起使用,但它似乎拒绝返回数组。(或者也许我没有正确使用它)

0 投票
1 回答
2104 浏览

apache-spark - 将 DataFrame 写入 parquet 会创建空文件

我正在尝试使用分技术对 Spark 作业进行一些性能优化。我正在阅读.parquet.csv文件并进行一些转换。在我进行分桶并加入两个 DataFrame 之后。然后我正在将加入的 DF 写入镶木地板,但我有一个空文件~500B而不是500Mb.

  • Cloudera (cdh5.15.1)
  • 火花 2.3.0
  • 斑点

    /li>

ssh当我在命令行中使用我有正确的结果启动 Spark 作业时~500Mb,我可以使用 Hive 看到的镶木地板文件。如果我使用 oozie 工作流运行相同的作业,我有一个空文件 ( ~500 Bytes)。当我这样做.show()时,我resultDF可以看到数据,但我有空的镶木地板文件。

当我不将数据保存为表格时,写入镶木地板没有问题。它仅发生在从表创建的 DF 中。

有什么建议么 ?

提前感谢您的任何想法!

0 投票
1 回答
1218 浏览

hadoop - Spark(2.3)无法识别通过 Hive Alter Table 命令添加的 Parquet 表中的新列

我有一个使用 Spark 2.3 API 创建的 Hive Parquet 表df.saveAstable。有一个单独的 Hive 进程可以更改同一个 parquet 表以添加列(根据要求)。但是,下次当我尝试将同一个 parquet 表读入 Spark 数据帧时,使用 Hive Alter Table 命令添加到 parquet 表中的新列未显示在df.printSchema输出中。

根据初步分析,似乎可能存在一些冲突,Spark 使用自己的架构而不是读取 Hive 元存储。因此,我尝试了以下选项:

更改火花设置: spark.sql.hive.convertMetastoreParquet=false 和刷新火花目录: spark.catalog.refreshTable("table_name")

但是,以上两个选项都不能解决问题。

任何建议或替代方案都会非常有帮助。

0 投票
1 回答
3829 浏览

python - Pyspark 自联接错误“缺少已解决的属性”

在进行 pyspark 数据帧自加入时,我收到一条错误消息:

这是一个简单的数据框自连接,如下面的,它工作正常,但是在对数据框进行一些操作(如添加列或与其他数据框连接)后,会引发上述错误。

使用像下面这样的数据框别名也不起作用,并且会引发相同的错误消息:

0 投票
1 回答
58 浏览

apache-spark - 升级版本时 Spark shuffle 磁盘溢出增加

从 spark 2.3 升级到 spark 2.4.3 时,我看到我的一个阶段产生的随机磁盘溢出量增加了 20-30%。

在两种环境中执行相同的代码。

两种环境之间的所有配置都相同

0 投票
0 回答
232 浏览

installation - 我为 spark 2.4 添加了一个包裹,并为 spark 2 创建了一个服务。但它调用 spark 1.6 shell

在 CDH 5.13 中,我添加了 spark 2.4 包并在云管理器中创建了 spark 2 服务。但是当我运行 spark2-shell 时,它调用 spark 1.6

CDH版本:5.13

[cloudera@quickstart lib]$ spark2-shell 将默认日志级别设置为“WARN”。要调整日志记录级别,请使用 sc.setLogLevel(newLevel)。SLF4J:类路径包含多个 SLF4J 绑定。SLF4J:在 [jar:file:/usr/lib/zookeeper/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] 中找到绑定 SLF4J:在 [jar:file: 中找到绑定/usr/lib/flume-ng/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J:在 [jar:file:/usr/lib/parquet/lib 中找到绑定/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J:在 [jar:file:/usr/lib/avro/avro-tools-1.7.6-cdh5.13.0 中找到绑定.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J:见http://www.slf4j.org/codes.html#multiple_bindings解释一下。SLF4J:实际绑定类型为 [org.slf4j.impl.Log4jLoggerFactory] ​​欢迎来到


/ / _ _____/ / _\ / _ / _ `/ / ' / / / .__/_, / / / /_\ 1.6.0版/ /

使用 Scala 版本 2.10.5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_202) 输入表达式以对其进行评估。键入 :help 以获取更多信息。Spark 上下文可用作 sc (master = local[*], app id = local-1565015557669)。SQL 上下文可用作 sqlContext。

我希望它会调用 spark 2.4 shell,但它调用 spark 1.6 shell。

0 投票
2 回答
190 浏览

java - 从 Spark 中的多个 .gz 文件中读取特定文件

我正在尝试读取具有特定名称的文件,该文件存在于文件夹中的多个 .gz 文件中。
例如
D:/sample_datasets/gzfiles |-my_file_1.tar.gz |-my_file_1.tar |-file1.csv |-file2.csv |-file3.csv |-my_file_2.tar.gz |-my_file_2.tar |-file1.csv |-file2.csv |-file3.csv

我只对阅读file1.csv所有.gz文件中具有相同架构的内容感兴趣。

我将路径传递D:/sample_datasets/gzfileswholeTextFiles(). JavaSparkContext但是,它会返回 tar viz 中所有文件的内容。文件 1.csv、文件 2.csv、文件 3.csv。

有没有办法我只能读取file1.csvDataset 或 RDD 中的内容。提前致谢!