小编Bha*_*h K的帖子

使用 Popen 独立运行 python 子进程

我想使用 python 独立运行执行 python 脚本作为 UNIX shell 命令Popen

Script1.py:该脚本将采用多个参数。 Script2.py:该脚本将解析一些条件并准备调用所需的必要参数Script1.py

假设Script2.py解析了一些条件并准备了一个命令来运行 Script1.py Commandpython Script1.py arg1 arg2 arg3

当前运行脚本为:

proc=subprocess.Popen(Command,shell=True,stdout=None, stderr=None)
Run Code Online (Sandbox Code Playgroud)

但是,当我Script2.py手动杀死(使用 CTRL+C)时,我可以看到 Script1.py 也被杀死/终止。

如何Script1.py独立运行而不用担心 的状态Script2.py

python linux

4
推荐指数
1
解决办法
3760
查看次数

创建Dataframe时出现DecimalType问题

当我尝试使用十进制类型创建数据框时,它会给我下面的错误.

我正在执行以下步骤:

import org.apache.spark.sql.Row;
import org.apache.spark.sql.types.StructField;
import org.apache.spark.sql.types.StructType;
import org.apache.spark.sql.types.StringType;
import org.apache.spark.sql.types.DataTypes._;


//created a DecimalType
val DecimalType = DataTypes.createDecimalType(15,10)
Run Code Online (Sandbox Code Playgroud)

//创建了一个模式

val sch = StructType(StructField("COL1",StringType,true)::StructField("COL2",**DecimalType**,true)::Nil)

val src = sc.textFile("test_file.txt")
val row = src.map(x=>x.split(",")).map(x=>Row.fromSeq(x))
val df1= sqlContext.createDataFrame(row,sch)
Run Code Online (Sandbox Code Playgroud)

df1创建时没有任何错误.但是,当我发出df1.collect()动作时,它给出了以下错误:

scala.MatchError: 0 (of class java.lang.String)
    at org.apache.spark.sql.catalyst.CatalystTypeConverters$DecimalConverter.toCatalystImpl(CatalystTypeConverters.scala:326)
Run Code Online (Sandbox Code Playgroud)

test_file.txt内容:

test1,0
test2,0.67
test3,10.65
test4,-10.1234567890
Run Code Online (Sandbox Code Playgroud)

我创建DecimalType的方式有什么问题吗?

scala dataframe apache-spark

2
推荐指数
1
解决办法
5020
查看次数

标签 统计

apache-spark ×1

dataframe ×1

linux ×1

python ×1

scala ×1