我有一个文本文件,例如:
{"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()。它会打印所有值,但不能仅在单个预测中打印。
请查看并建议我。预先感谢!