我有一个来自wireshark的JSON文件,我需要加载到Spark。我正在使用PySpark。
我需要从这些JSON文件中提取数据,然后将该数据作为json文件输出。
问题是我似乎无法正确加载JSON文件,以帮助我找到每个数据。我尝试了json.loads
,也尝试了Spark中的SQLContext
。
Spark中的Sqlcontext赢得了很多帮助,因为我想让它适应火花流模块。
Json文件看起来像这样:
[
{
"_index": "packets-2017-07-27",
"_type": "pcap_file",
"_score": null,
"_source": {
"layers": {
"frame": {
"frame.encap_type": "1",
"frame.time": "May 13, 2004 11:17:09.864896000 Afr. centrale Ouest",
"frame.offset_shift": "0.000000000",
"frame.time_epoch": "1084443429.864896000",
"frame.time_delta": "0.000000000",
"frame.time_delta_displayed": "0.000000000",
"frame.time_relative": "2.553672000",
"frame.number": "13",
"frame.len": "89",
"frame.cap_len": "89",
"frame.marked": "0",
"frame.ignored": "0",
"frame.protocols": "eth:ethertype:ip:udp:dns",
"frame.coloring_rule.name": "UDP",
"frame.coloring_rule.string": "udp"
},....]
答案 0 :(得分:0)
rdd = sc.wholeTextFiles("abc.json")
import re
json_rdd = rdd.map(lambda x : x[1])\
.map(lambda x : re.sub(r"\s+", "", x, \
flags=re.UNICODE))
printRdd(json_rdd)
df = spark.read.json(json_rdd)
df.printSchema()