我来自pandas背景,习惯于将CSV文件中的数据读入数据帧,然后使用简单命令将列名更改为有用的东西:
df.columns = new_column_name_list
Run Code Online (Sandbox Code Playgroud)
但是,在使用sqlContext创建的pyspark数据帧中,这同样不起作用.我可以轻松解决的唯一解决方案如下:
df = sqlContext.read.format("com.databricks.spark.csv").options(header='false', inferschema='true', delimiter='\t').load("data.txt")
oldSchema = df.schema
for i,k in enumerate(oldSchema.fields):
k.name = new_column_name_list[i]
df = sqlContext.read.format("com.databricks.spark.csv").options(header='false', delimiter='\t').load("data.txt", schema=oldSchema)
Run Code Online (Sandbox Code Playgroud)
这基本上是定义变量两次并首先推断模式然后重命名列名,然后再次使用更新的模式加载数据帧.
像熊猫一样,有更好更有效的方法吗?
我的火花版是1.5.0
我试图运行以下shell脚本,它应该检查字符串既不是空格也不是空.但是,我得到的所有3个字符串的输出都相同.我尝试过使用"[["语法,但无济于事.
这是我的代码:
str="Hello World"
str2=" "
str3=""
if [ ! -z "$str" -a "$str"!=" " ]; then
echo "Str is not null or space"
fi
if [ ! -z "$str2" -a "$str2"!=" " ]; then
echo "Str2 is not null or space"
fi
if [ ! -z "$str3" -a "$str3"!=" " ]; then
echo "Str3 is not null or space"
fi
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
# ./checkCond.sh
Str is not null or space
Str2 is not null or space
Run Code Online (Sandbox Code Playgroud) 我使用Pacifist [http://www.charlessoft.com/] 在Mac OS X 10.6.8上安装了Java 1.7.0_45但是我无法运行我下载的jar文件.jar文件是一个线程应用程序.
我得到的错误消息是:
java -jar context.jar
2013-10-31 14:14:41.898 java[330:a07] *** NSInvocation: warning: object 0x109356390 of class 'ThreadUtilities' does not implement methodSignatureForSelector: -- trouble ahead
2013-10-31 14:14:41.900 java[330:a07] *** NSInvocation: warning: object 0x109356390 of class 'ThreadUtilities' does not implement doesNotRecognizeSelector: -- abort
Trace/BPT trap
Run Code Online (Sandbox Code Playgroud)
无论如何我可以运行jar.我已正确设置JAVA_HOME路径,java -version显示1.7.0_45作为版本.
相同的应用程序在Windows Java 1.7.0_45和Linux Java 1.7上都能正常运行.
对解决方案和给定关键字的Web搜索返回的结果非常少,并且没有任何特定解决方案.我是mac的新手,所以我无法完全理解这个问题.
或者,无论如何,我可以从Mac中的文件夹运行Java,就像我可以在Windows和Linux中一样,只需提取Java内容并更改JAVA_HOME即可.如果可以,那么我应该能够运行我的JAR.
更新:
我发现问题是因为Inno Setup.安装程序已创建,但Inno Setup会自动尝试运行需要管理员权限的安装程序.由于未给出这些权限,因此安装程序失败.
如果我将权限授予使用Inno Setup准备的任何其他安装程序,则在提供权限几分钟后创建本机程序包.但如果我在较长时间后尝试再次发出错误.
我试图exe在eclipse中从我的JavaFX项目中打包我的文件.我使用JDK 1.8.0_25和Inno Setup 5使用build.xmlAnt脚本进行创建.
fx:deploy尝试exe使用Inno Setup 创建文件时,我的代码到达了出现此错误的部分.我的Inno安装程序位于系统路径中,当我检查任务管理器时,我看到Inno Setup实际上正在使用.
这是我得到的完整堆栈跟踪:
Using base JDK at: C:\Program Files\Java\jdk1.8.0_25\jre\..\jre
[fx:deploy] java.io.IOException: Exec failed with code 2 command [[C:\Program Files (x86)\Inno Setup 5\iscc.exe, /oE:\Code\Java\ProjectHome\build\deploy\bundles, C:\Users\SHUBHA~1\AppData\Local\Temp\fxbundler7925821782057479088\images\win-exe.image\ProjectHome.iss] in C:\Users\SHUBHA~1\AppData\Local\Temp\fxbundler7925821782057479088\images\win-exe.image
[fx:deploy] at com.oracle.tools.packager.IOUtils.exec(IOUtils.java:165)
[fx:deploy] at com.oracle.tools.packager.IOUtils.exec(IOUtils.java:138)
[fx:deploy] at com.oracle.tools.packager.IOUtils.exec(IOUtils.java:132)
[fx:deploy] at com.oracle.tools.packager.windows.WinExeBundler.buildEXE(WinExeBundler.java:533)
[fx:deploy] at com.oracle.tools.packager.windows.WinExeBundler.bundle(WinExeBundler.java:349)
[fx:deploy] at com.oracle.tools.packager.windows.WinExeBundler.execute(WinExeBundler.java:172)
[fx:deploy] at com.sun.javafx.tools.packager.PackagerLib.generateNativeBundles(PackagerLib.java:511)
[fx:deploy] at com.sun.javafx.tools.packager.PackagerLib.generateDeploymentPackages(PackagerLib.java:476)
[fx:deploy] at com.sun.javafx.tools.ant.DeployFXTask.execute(DeployFXTask.java:265)
[fx:deploy] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
[fx:deploy] at …Run Code Online (Sandbox Code Playgroud) java ×2
ant ×1
apache-spark ×1
bash ×1
freebsd ×1
inno-setup ×1
jar ×1
java-8 ×1
javafx ×1
macos ×1
pyspark ×1
pyspark-sql ×1
python ×1
shell ×1