Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何将json日志读取到数据帧?_Python 3.x_Pyspark_Apache Spark Sql_Spark Streaming_Pyspark Dataframes - Fatal编程技术网

Python 3.x 如何将json日志读取到数据帧?

Python 3.x 如何将json日志读取到数据帧?,python-3.x,pyspark,apache-spark-sql,spark-streaming,pyspark-dataframes,Python 3.x,Pyspark,Apache Spark Sql,Spark Streaming,Pyspark Dataframes,我有以下实时流日志类型,其中包含文本类型和json类型 2020-09-24T08:03:01.633Z 11.21.23.1 {"EventTime":"2020-09-24 13:33:01","Hostname":"abc-cde.india.local","Keywords":-1234} 我使用下面的结构来读取上面的日志,而不添加特定的条件来读取json schema = Struc

我有以下实时流日志类型,其中包含文本类型和json类型

2020-09-24T08:03:01.633Z 11.21.23.1 {"EventTime":"2020-09-24 13:33:01","Hostname":"abc-cde.india.local","Keywords":-1234}
我使用下面的结构来读取上面的日志,而不添加特定的条件来读取json

schema = 
StructType(StructField("Date", DateType()),
StructField("Source IP", StringType()),
StructField("Evenet Type", StringType())
)
df = session.read.option("header", "true").option("delimiter", " ").csv( "F:\\mypath\\ad_logs.txt", schema=self.schema) df.show()
因此DF返回为

| Date    |Source IP  | Event Type 
2020-09-24|11.21.23.1 |{"EventTime":"202
我考虑过为json值创建实际的模式,只解析“事件类型”,分别使用一些方法,如“udf”

但不确定这是否是解决这一问题的正确方法

我认为,既然我们已经知道json模式的结构,我们可以在读取文件本身的同时解析它

#因此,预期的输出将具有

| Date    | Source IP | EventTime         | Hostname            |Keywords |
2020-09-24|11.21.23.1 |2020-09-24 13:33:01| abc-cde.india.local | 1234
我正在寻找一种方法来创建以下类型的结构化DF,如果有任何其他建议,也非常感谢

谢谢