问题标签 [sparklyr]

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 回答
1705 浏览

r - 将大型数据集缓存到 spark 内存中时“超出 GC 开销限制”(通过 sparklyr 和 RStudio)

我对我正在尝试使用的大数据技术非常陌生,但到目前为止,我已经设法在 RStudio 中设置 sparklyr 以连接到独立的 Spark 集群。数据存储在 Cassandra 中,我可以成功地将大型数据集带入 Spark 内存(缓存)以对其进行进一步分析。

然而,最近我在将一个特别大的数据集导入 Spark 内存时遇到了很多麻烦,即使集群应该有足够的资源(60 个内核,200GB RAM)来处理其大小的数据集。

我认为通过将缓存的数据限制为仅选择几个感兴趣的列,我可以克服这个问题(使用我之前查询的答案代码here),但事实并非如此。发生的情况是我本地机器上的 jar 进程加速以占用所有本地 RAM 和 CPU 资源,整个进程冻结,并且集群上的执行器不断被删除和重新添加。奇怪的是,即使我只选择 1 行进行缓存,也会发生这种情况(这应该使这个数据集比其他我在缓存到 Spark 内存中没有问题的数据集小得多)。

我查看了日志,这些似乎是流程早期唯一的信息错误/警告:

然后在 20 分钟左右后,整个工作崩溃了:

我已经更改了连接配置以增加心跳spark.executor.heartbeatInterval: '180s'间隔spark.yarn.executor.memoryOverhead

在我的配置文件中,我通过一次添加以下每个设置进行了实验(均无效):

更新:我当前的完整yml配置文件如下:

所以我的问题是:

  1. 有人对在这种情况下该怎么做有任何想法吗?
  2. 我可以更改配置设置以帮助解决此问题吗?
  3. 或者,有没有办法以 RStudio/sparklyr 作为驱动程序批量导入 cassandra 数据?
  4. 或者,有没有办法在数据被带入缓存时对数据进行处理/过滤/编辑,以使结果表更小(类似于使用 SQL 查询,但使用更复杂的 dplyr 语法)?
0 投票
3 回答
357 浏览

apache-spark - 无法解析主 URL:“spark.bluemix.net”

我正在尝试从在我的桌面机器上运行的 RStudio 连接到 IBM 的 Spark as a Service 在 Bluemix 上运行。

我已经config.yml从运行在 IBM 的 Data Science Experience 上的自动配置的 RStudio 环境中复制了:

我正在尝试像这样连接:

错误:

stackoverflow 上还有一些其他问题带有类似的错误消息,但它们并未尝试连接到在 Bluemix 上运行的 Spark 服务。


更新 1

我已将 config.yml 更改为如下所示:

...和我的连接代码看起来像这样:

但是,现在的错误是:

0 投票
1 回答
1065 浏览

r - SparklyR/Spark SQL 根据字节数/字符数将字符串拆分为多列

我有一个火花数据框 TABLE1,其中一列有 100000 行,每行包含一个长度相同的字符串

我想根据下面分隔的行将每一行分成多列,包括作为单独列的空白。

目前我正在尝试将 DBI 包与如下所示的代码一起使用:

我有一个火花数据框 TABLE1,其中一列有 100000 行,每行包含一个长度相同的字符串

我想根据下面分隔的行将每一行分成多列,包括作为单独列的空白。

目前我正在尝试将 DBI 包与如下所示的代码一起使用:

然而,这似乎不起作用。此外,即使它这样做了,它也只是返回一个 R 数据帧,我需要它在 spark 数据帧中工作。我正在寻找除 SQL 之外的替代建议,或者寻找适用于 spark 并返回解析的 Spark 数据帧的正确语法,然后我可以在该数据帧上执行 ML。有任何想法吗。

提前致谢。

0 投票
1 回答
366 浏览

r - SparklyR 安装问题(“延迟加载失败”)

在 Linux 服务器上安装 SparklyR 时遇到一些问题,使用相同的代码一直运行到昨天。已经尝试过安装/卸载 DBI、jsonlite 和 dplyr 的各种组合。

到目前为止,一切似乎都运行良好:

不确定这是否与3 月 8 日的 GitHub 提交有关,但加载早期版本似乎也无济于事。有任何想法吗?

0 投票
1 回答
1826 浏览

r - Spark SQL 的 SparklyR 包装器:sqlContext.sql

我正在尝试为 SparklyR 的 SQL 函数编写一个包装器。我创建了以下功能:

然后我使用以下方法调用它:

但我收到以下错误:

任何建议或修复将不胜感激。

0 投票
1 回答
660 浏览

r - 为什么 ml_create_dummy_variables 不在 sparklyr 中显示新的虚拟变量列

我正在尝试在 sparklyr 中创建模型矩阵。有一个函数ml_create_dummy_variables()可以一次为一个分类变量创建虚拟变量。据我所知,没有 model.matrix() 等效于一步创建模型矩阵。它很容易使用ml_create_dummy_variables(),但我不明白为什么新的虚拟变量没有存储在 Spark 数据框中。

考虑这个例子:

现在我从 sparklyr 收到以下通知:

当我检查列数时,不会出现新的虚拟变量。

为什么会这样?另外,有没有一种简单的方法可以一步转换所有列?我使用超过 1000 个变量的数据集,所以我需要一种快速的方法来做到这一点。我试过创建一个循环,但这并没有做任何事情:

0 投票
1 回答
2066 浏览

r - 根据列数据类型对 spark 数据帧(在 sparklyr 中)进行子集化的最佳方法是什么

我正在将一堆列转换为虚拟变量。我想从数据框中删除原始分类变量。我正在努力弄清楚如何在 sparklyr 中做到这一点。它在 dplyr 中很简单,但 dplyr 功能在 sparklyr 中不起作用。

例如:

首先创建一个火花数据框:

现在创建虚拟变量:

我可以简单地使用删除原始分类变量

但是,我实际使用的数据有 300 个分类变量。我需要一种快速的方法来确定哪些列是字符/因素。将这些列转换为虚拟变量后 - 然后我可以删除原始分类变量。我尝试了以下方法:

然后我收到以下错误:

我也试过:

但我得到:

关于如何做到这一点的任何想法?

0 投票
1 回答
1955 浏览

r - 权限被拒绝 - sparklyr 中的 \tmp\hive

我正在尝试使用copy_to函数将 R 数据帧复制到 Spark 2.0.1,但它说

HDFS 上的根暂存目录:/tmp/hive 应该是可写的。当前权限是:rw-rw-rw-

我执行了 winutils.exe来更改权限,但我仍然得到相同的权限异常。

我尝试了该命令的其他变体,例如-

但没有任何效果。我仍然收到错误

0 投票
1 回答
370 浏览

r - 通过推断架构读取 csv 文件时出现 sparklyr 异常:double

我正在尝试使用spark_read_csv函数将 csv 读入 Spark。我在推断架构时遇到异常,即我在设置时遇到异常infer_schema=TRUE

我收到以下异常:

错误:org.apache.spark.SparkException:作业因阶段失败而中止:阶段 90.0 中的任务 0 失败 1 次,最近一次失败:阶段 90.0 中丢失任务 0.0(TID 151,本地主机):java.text.ParseException:无法解析编号:“cr1_fd_dttm”在 java.text.NumberFormat.parse(NumberFormat.java:385) 在 org.apache.spark.sql.execution.datasources.csv.CSVTypeCast$$anonfun$castTo$4.apply$mcD$sp(CSVInferSchema .scala:259)

但是,当我尝试设置时infer_schema=FALSE,正如预期的那样,所有内容都被读取为chr类型。

这是列中数据的样子cr1_fd_dttm

有人可以帮助我吗?

谢谢

0 投票
1 回答
1116 浏览

r - 在 sparklyr 中删除 NA 列

我有一个包含 75 列的数据框,其中 12 列具有所有 NA,有些具有 70% 的 NA。我想删除具有 >=70% NA 的列。

任何人都可以帮助我吗?我试过了

但我得到了例外:

错误:无法从 NULL 类的对象中检索 spark_connection

我也试过:

但我得到了例外

colSums(!is.na(df)) 中的错误:“x”必须是至少二维的数组