从CSV文件测试数据并根据经过训练的模型进行预测

时间:2019-08-26 13:16:22

标签: python python-3.x pandas numpy pyspark

我有一个文本文件,例如:

{"SrcIP_Entropy": "0.8277165068887369", "DstIP_Entropy": "0.879014711680073", "SrcPort_Entropy": "0.8628103819624768", "DstPort_Entropy": "0.839472844582706"}

我正在尝试将数据加载到pyspark中并根据经过训练的模型做出预测,但是我无法做到数据类型不匹配或其他原因。

path = 'validation folder/entropy-1.txt'
spark.read.schema(schema).format("json").load(path).show(2)

但是,它给了我空数据,因为我没有正确处理数据类型。

我有多个文本文件,如我们所见,它们都是json转储。

为了运行一个循环并进行预测,我执行了以下操作来解决我的数据类型错误。

from pyspark.sql.types import StructType, StructField, StringType, DoubleType
# make  alist of validation text files
validation_file_list = []
for root, dirs, files in os.walk("validation folder/"):
    validation_file_list = files


for i in validation_file_list:
    print('validation folder/' + i)

    #with io.open("validation folder/" + i, "r", encoding="utf-8") as my_file:
        #my_unicode_string = my_file.read()
        #d = json.loads(my_unicode_string)

    schema1 = StructType([StructField('SrcIP_Entropy', StringType()),
                StructField('DstIP_Entropy', StringType()),
                StructField('SrcPort_Entropy', StringType()),
                StructField('DstPort_Entropy', StringType())
                ])

    schema2 = StructType([StructField('SrcIP_Entropy', DoubleType()),
                StructField('DstIP_Entropy', DoubleType()),
                StructField('SrcPort_Entropy', DoubleType()),
                StructField('DstPort_Entropy', DoubleType())
                ])

    dfs = spark.read.schema(schema1).format("json").load(str('validation folder/' + i))
    newDF = spark.createDataFrame(dfs.rdd, schema=schema2)
    single_pred = model.transform(newDF)

现在,我可以进行预测了,但是看不到。

single_pred.collect()

它引发错误。

Py4JJavaError                             Traceback (most recent call last)
<ipython-input-13-7cbd405bf60c> in <module>
----> 1 single_pred.collect()

Py4JJavaError: An error occurred while calling o1727.collectToPython.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 903.0 failed 1 times, most recent failure: Lost task 0.0 in stage 903.0 (TID 898, localhost, executor driver): java.io.IOException: Cannot run program "python3.7.3": error=2, No such file or directory

现在,如果对火车数据进行预测并进行predicting.collect()。它会打印所有值,但不能仅在单个预测中打印。

请查看并建议我。预先感谢!

0 个答案:

没有答案