是否有可能以及将列添加到数据框的最有效的方法是什么?
更具体地,列可以用作现有数据帧的行ID.
在简化的情况下,从文件读取而不是标记它,我可以想到如下(在Scala中),但它完成了错误(在第3行),并且无论如何看起来不是最好的路线:
var dataDF = sc.textFile("path/file").toDF()
val rowDF = sc.parallelize(1 to DataDF.count().toInt).toDF("ID")
dataDF = dataDF.withColumn("ID", rowDF("ID"))
Run Code Online (Sandbox Code Playgroud) 有一个类成员,std::vector<double> v并且int n使用以下内容之间的区别是什么vector,未初始化:
v.assign(n, 0.0);
Run Code Online (Sandbox Code Playgroud)
要么
v.resize(n, 0.0);
Run Code Online (Sandbox Code Playgroud) 我用Spark设置了EC2集群.一切正常,所有主/从都启动并运行.
我正在尝试提交示例作业(SparkPi).当我ssh到集群并从那里提交它 - 一切正常.但是,当在远程主机(我的笔记本电脑)上创建驱动程序时,它不起作用.我尝试了两种模式--deploy-mode:
--deploy-mode=client:
从笔记本电脑:
./bin/spark-submit --master spark://ec2-52-10-82-218.us-west-2.compute.amazonaws.com:7077 --class SparkPi ec2test/target/scala-2.10/ec2test_2.10-0.0.1.jar
Run Code Online (Sandbox Code Playgroud)
导致以下无限期警告/错误:
WARN TaskSchedulerImpl:初始作业未接受任何资源; 检查群集UI以确保工作人员已注册并且具有足够的内存15/02/22 18:30:45
错误SparkDeploySchedulerBackend:要求删除不存在的执行程序0 15/02/22 18:30:45
错误SparkDeploySchedulerBackend:要求删除不存在的执行程序1
...和失败的驱动程序 - 在Spark Web UI中出现"已完成的驱动程序"并显示"State = ERROR".
我试图通过核心和内存限制提交脚本,但它没有帮助...
--deploy-mode=cluster:
从笔记本电脑:
./bin/spark-submit --master spark://ec2-52-10-82-218.us-west-2.compute.amazonaws.com:7077 --deploy-mode cluster --class SparkPi ec2test/target/scala-2.10/ec2test_2.10-0.0.1.jar
Run Code Online (Sandbox Code Playgroud)
结果是:
....驱动程序成功提交驱动程序-20150223023734-0007 ...在轮询主机之前等待驱动程序状态...轮询主机驱动程序状态驱动程序状态20150223023734-0007是错误来自集群的异常是:java.io.FileNotFoundException :文件文件:/home/oleg/spark/spark12/ec2test/target/scala-2.10/ec2test_2.10-0.0.1.jar不存在.java.io.FileNotFoundException:文件文件:/home/oleg/spark/spark12/ec2test/target/scala-2.10/ec2test_2.10-0.0.1.jar不存在.在org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:397)在org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:251)在org.apache.hadoop.fs.FileUtil.copy (FileUtil.java:329)在org.apache.spark.deploy.worker.DriverRunner.org $阿帕奇$火花$部署$工人$ DriverRunner $$ downloadUserJar(DriverRunner.scala:150)在org.apache.spark.deploy. worker.DriverRunner $$匿名$ 1.run(DriverRunner.scala:75)
所以,我会感谢任何关于出错的指示以及如何从远程客户端部署作业的一些指导.谢谢.
更新: 因此对于群集模式中的第二个问题,每个群集节点必须全局可见该文件,因此它必须位于可访问位置的某个位置.这解决了IOException,但导致了与客户端模式相同的问题.
我是R的新手,我正在尝试为R函数(或RC/R6类方法)提供类似枚举的参数,我目前使用的字符向量加上match.arg以下内容类似:
EnumTest = function(enum = c("BLUE", "RED", "BLACK")) {
enumArg <-
switch(
match.arg(enum), "BLUE" = 0L, "RED" = 1L, "BLACK" = 2L
)
switch(enumArg,
# do something
)
}
Run Code Online (Sandbox Code Playgroud)
是否有更好/更简洁的方式来模仿R中的枚举行为?例如,一个大问题是用户必须知道参数的可能值集并手动将其键入字符串 - 没有任何建议或自动完成...
如果没有其他更好的方法,有一件事可以改进上述方法 - 通过全局预定义枚举或者说作为R6类的私有成员来使其更简洁是很好的:
Color <- c("BLUE", "RED", "BLACK")
Run Code Online (Sandbox Code Playgroud)
然后可以(重新)在一个或多个函数定义中使用它,例如:
EnumTest = function(enum = Color) {
...
Run Code Online (Sandbox Code Playgroud)
但是,我不确定如何Color在match.arg函数中使用此向量.如果我可以将Color键定义为实际颜色值并且值是整数表示,那将是很好的但是我不确定它是多么明智......无论如何,也许存在更常见的整齐方法.
主要目标是为我的包和功能的用户提供易于使用的直观界面(例如,查找可能值集,选项卡完成,自动建议等的简单方法),然后是使用类似枚举的参数标准化开发此类函数
假设我们有一个包含数据的数组:
double[] x = new double[N] {x_1, ..., x_N};
Run Code Online (Sandbox Code Playgroud)
N包含与以下元素对应的标签的大小数组x:
int[] ind = new int[N] {i_1, ..., i_N};
Run Code Online (Sandbox Code Playgroud)
什么是选择从所有元素最快的方法x是有一定的标签I根据ind?
例如,
x = {3, 2, 6, 2, 5}
ind = {1, 2, 1, 1, 2}
I = ind[0] = 1
Run Code Online (Sandbox Code Playgroud)
结果:
y = {3, 6, 2}
Run Code Online (Sandbox Code Playgroud)
显然,使用循环可以很容易地(但不是有效和干净)完成,但我认为应该有如何使用.Where和lambdas 的方式.谢谢
编辑:
MarcinJuraszek提供的答案是完全正确的,谢谢.但是,我已经简化了这个问题,希望它能在我原来的情况下发挥作用.如果我们有泛型类型,你能看看有什么问题:
T1[] xn = new T1[N] {x_1, ..., x_N};
T2[] ind = new T2[N] {i_1, ..., i_N};
T2 I = ind[0] …Run Code Online (Sandbox Code Playgroud) SWIG 为 Python 模块生成两个包装层:C 包装器代码和 Python 包装器代码。而且,据我所知,两者都与 Python 3.x(目前为 3.1-3.6)的特定颠覆无关。
然而,编译代码时,我必须包括Python的具体3.x版,其中包括在特定的库版本的标题PyConfig.h,例如3.4:pragma comment(lib,"python34.lib")-其结果是必须找到和负载的Python包python34.dll在运行时,任何其他版本的加载都会失败。
但是所有 3.x 版本都兼容并且对生成的.pyd二进制文件进行简单编辑- 用python34.dllsay替换python36.dll使最终模块与 Python 3.6 一起工作就好了。
有什么方法可以使用 SWIG 创建 Python 3.x 包,以便能够搜索并找到系统上安装的任何可用 3.x 版本?
我正在尝试使用 Spark-CSV 包(https://github.com/databricks/spark-csv)将csv文件读入Spark DataFrames.
一切正常,但所有列都假定为StringType.
如 Spark SQL 文档 ( https://spark.apache.org/docs/latest/sql-programming-guide.html ) 中所示,对于 JSON 等内置源,可以自动推断具有数据类型的模式。
可以自动推断 CSV 文件中的列类型吗?
给定一组字符串,比如说"String1", "String2",..., "StringN",C++中确定(返回true或false)是否string s与上述集合中的任何字符串匹配的最有效方法是什么?
可以将Boost.Regex用于此任务吗?
给定一个向量std::vector<double> v,我们可以有效地找到独特的元素:
std::vector<double> uv(v.begin(), v.end());
std::sort(uv.begin(), uv.end());
std::erase(std::unique(uv.begin, uv.end()), uv.end());
Run Code Online (Sandbox Code Playgroud)
用最好的方法(没有循环,使用STL或lambdas)创建一个向量:
std::vector<double> freq_uv(uv.size());
Run Code Online (Sandbox Code Playgroud)
其中包含出现的每个不同元素的频率v(与排序的唯一值的顺序相同)?
注意:类型可以是任何东西,而不仅仅是 double
有没有办法在使用提供的脚本在Amazon云上启动Spark时,使用特定操作系统(比如Ubuntu)指定AWS AMI?
什么是EC-2脚本启动的默认AMI操作系统?它是否有资格获得AWS的"免费套餐"计划?
ubuntu amazon-ec2 amazon-web-services apache-spark amazon-ami