日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spark Structured Streaming 解析 JSON

發布時間:2023/12/31 javascript 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark Structured Streaming 解析 JSON 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • json1
    • 代碼
    • 寫數據庫
    • json2
    • Schema
    • 代碼(反序列化 value 中的字節數組, 得到原始 JSON)
    • json3
    • 代碼

json1

{"metadata":{"access_token":"c.FmDPkzyzaQe...","client_version":1},"devices":{"thermostats":{"peyiJNo0IldT2YlIVtYaGQ":{"device_id":"peyiJNo0IldT2YlIVtYaGQ","locale":"en-US","software_version":"4.0","structure_id":"VqFabWH21nwVyd4RWgJgNb292wa7hG_dUwo2i2SG7j3-BOLY0BA4sw","name":"Hallway (upstairs)","name_long":"Hallway Thermostat (upstairs)","last_connection":"2016-10-31T23:59:59.000Z","is_online":true,"can_cool":true,"can_heat":true,"is_using_emergency_heat":true,"has_fan":true,"fan_timer_active":true,"fan_timer_timeout":"2016-10-31T23:59:59.000Z","has_leaf":true,"temperature_scale":"C","target_temperature_f":72,"target_temperature_c":21.5,"target_temperature_high_f":80,"target_temperature_high_c":24.5,"target_temperature_low_f":65,"target_temperature_low_c":19.5,"eco_temperature_high_f":80,"eco_temperature_high_c":24.5,"eco_temperature_low_f":65,"eco_temperature_low_c":19.5,"away_temperature_high_f":80,"away_temperature_high_c":24.5,"away_temperature_low_f":65,"away_temperature_low_c":19.5,"hvac_mode":"heat","previous_hvac_mode":"heat","ambient_temperature_f":72,"ambient_temperature_c":21.5,"humidity":40,"hvac_state":"heating","where_id":"UNCBGUnN24...","is_locked":true,"locked_temp_min_f":65,"locked_temp_max_f":80,"locked_temp_min_c":19.5,"locked_temp_max_c":24.5,"label":"Pat's room","where_name":"Hallway","sunlight_correction_enabled":true,"sunlight_correction_active":true,"fan_timer_duration":"15","time_to_target":"~15","time_to_target_training":"training"}},"smoke_co_alarms":{"RTMTKxsQTCxzVcsySOHPxKoF4OyCifrs":{"device_id":"RTMTKxsQTCxzVcsySOHPxKoF4OyCifrs","locale":"en-US","software_version":"1.01","structure_id":"VqFabWH21nwVyd4RWgJgNb292wa7hG_dUwo2i2SG7j3-BOLY0BA4sw","name":"Hallway (upstairs)","name_long":"Hallway Protect (upstairs)","last_connection":"2016-10-31T23:59:59.000Z","is_online":true,"battery_health":"ok","co_alarm_state":"ok","smoke_alarm_state":"ok","is_manual_test_active":true,"last_manual_test_time":"2016-10-31T23:59:59.000Z","ui_color_state":"gray","where_id":"UNCBGUnN24...","where_name":"Hallway"}},"cameras":{"awJo6rH0IldT2YlIVtYaGQ":{"device_id":"awJo6rH...","software_version":"4.0","structure_id":"VqFabWH21nwVyd4RWgJgNb292wa7hG_dUwo2i2SG7j3-BOLY0BA4sw","where_id":"d6reb_OZTM...","where_name":"Hallway","name":"Hallway (upstairs)","name_long":"Hallway Camera (upstairs)","is_online":true,"is_streaming":true,"is_audio_input_enabled":true,"last_is_online_change":"2016-12-29T18:42:00.000Z","is_video_history_enabled":true,"web_url":"https://home.nest.com/cameras/device_id?auth=access_token","app_url":"nestmobile://cameras/device_id?auth=access_token","is_public_share_enabled":true,"activity_zones":[{"name":"Walkway","id":"244083"},{"name":"Walkway2","id2":"244084"}],"public_share_url":"https://video.nest.com/live/STRING1?STRING2","snapshot_url":"STRING1/device_id/STRING2?auth=access_token","last_event":{"has_sound":true,"has_motion":true,"has_person":true,"start_time":"2016-12-29T00:00:00.000Z","end_time":"2016-12-29T18:42:00.000Z","urls_expire_time":"2016-10-31T23:59:59.000Z","web_url":"https://home.nest.com/cameras/device_id/cuepoints/STRING?auth=access_token","app_url":"nestmobile://cameras/device_id/cuepoints/STRING?auth=access_token","image_url":"STRING1/device_id/STRING2?auth=access_token","animated_image_url":"STRING1/device_id/STRING2?auth=access_token","activity_zone_ids":["244083","244084"]}}}},"structures":{"VqFabWH21nwVyd4RWgJgNb292wa7hG_dUwo2i2SG7j3-BOLY0BA4sw":{"structure_id":"VqFabWH21nwVyd4RWgJgNb292wa7hG_dUwo2i2SG7j3-BOLY0BA4sw","thermostats":["peyiJNo0IldT2YlIVtYaGQ","ggfgfdgrgrgg"],"smoke_co_alarms":["RTMTKxsQTCxzVcsySOHPxKoF4OyCifrs","ddddddddddd"],"cameras":["awJo6r...","ddddddssssssss"],"away":"home","name":"Home","country_code":"US","postal_code":"94304","peak_period_start_time":"2016-10-31T23:59:59.000Z","peak_period_end_time":"2016-10-31T23:59:59.000Z","time_zone":"America/Los_Angeles","eta":{"trip_id":"myTripHome1024","estimated_arrival_window_begin":"2016-10-31T22:42:59.000Z","estimated_arrival_window_end":"2016-10-31T23:59:59.000Z"},"eta_begin":"2016-08-04T13:21:37-07:00","co_alarm_state":"ok","smoke_alarm_state":"ok","rhr_enrollment":true,"wwn_security_state":"ok","wheres":{"Fqp6wJI...":{"where_id":"Fqp6wJI...","name":"Bedroom"}}}} }

代碼

package wmdeviceimport org.apache.spark.sql.SparkSession import org.apache.spark.sql.functions._ import org.apache.spark.sql.streaming.OutputMode import org.apache.spark.sql.types._object CamerasStructedStreaming {def main(args: Array[String]) {val spark = SparkSession.builder.appName("Camelia").master("local[*]").getOrCreate()val schema = new StructType().add("metadata", new StructType().add("access_token", StringType).add("client_version", IntegerType)).add("devices", new StructType().add("thermostats", MapType(StringType, new StructType().add("device_id", StringType).add("locale", StringType).add("software_version", StringType).add("structure_id", StringType).add("name", StringType).add("name_long", StringType).add("last_connection", TimestampType).add("is_online", BooleanType).add("can_cool", BooleanType).add("can_heat", BooleanType).add("is_using_emergency_heat", BooleanType).add("has_fan", BooleanType).add("fan_timer_active", BooleanType).add("fan_timer_timeout", TimestampType).add("has_leaf", BooleanType).add("temperature_scale", StringType).add("target_temperature_f", StringType).add("target_temperature_c", StringType).add("target_temperature_high_f", StringType).add("target_temperature_high_c", StringType).add("target_temperature_low_f", StringType).add("target_temperature_low_c", StringType).add("eco_temperature_high_f", StringType).add("eco_temperature_high_c", StringType).add("eco_temperature_low_f", StringType).add("eco_temperature_low_c", StringType).add("away_temperature_high_f", StringType).add("away_temperature_high_c", StringType).add("away_temperature_low_f", StringType).add("away_temperature_low_c", StringType).add("hvac_mode", StringType).add("previous_hvac_mode", StringType).add("ambient_temperature_f", StringType).add("ambient_temperature_c", StringType).add("humidity", StringType).add("hvac_state", StringType).add("where_id", StringType).add("is_locked", BooleanType).add("locked_temp_min_f", StringType).add("locked_temp_max_f", StringType).add("locked_temp_min_c", StringType).add("locked_temp_max_c", StringType).add("label", StringType).add("where_name", StringType).add("sunlight_correction_enabled", BooleanType).add("sunlight_correction_active", BooleanType).add("fan_timer_duration", StringType).add("time_to_target", StringType).add("time_to_target_training", StringType))).add("smoke_co_alarms", MapType(StringType, new StructType().add("device_id", StringType).add("locale", StringType).add("software_version", StringType).add("structure_id", StringType).add("name", StringType).add("name_long", StringType).add("last_connection", TimestampType).add("is_online", BooleanType).add("battery_health", StringType).add("co_alarm_state", StringType).add("smoke_alarm_state", StringType).add("is_manual_test_active", BooleanType).add("last_manual_test_time", TimestampType).add("ui_color_state", StringType).add("where_id", StringType).add("where_name", StringType))).add("cameras", MapType(StringType, new StructType().add("device_id", StringType).add("software_version", StringType).add("structure_id", StringType).add("where_id", StringType).add("where_name", StringType).add("name", StringType).add("name_long", StringType).add("is_online", BooleanType).add("is_streaming", BooleanType).add("is_audio_input_enabled", BooleanType).add("last_is_online_change", TimestampType).add("is_video_history_enabled", BooleanType).add("web_url", StringType).add("app_url", StringType).add("is_public_share_enabled", BooleanType).add("activity_zones", ArrayType(new StructType().add("name", StringType).add("id", StringType), true)).add("public_share_url", StringType).add("snapshot_url", StringType).add("last_event", new StructType().add("has_sound", BooleanType).add("has_motion", BooleanType).add("has_person", BooleanType).add("start_time", TimestampType).add("end_time", TimestampType).add("urls_expire_time", TimestampType).add("web_url", StringType).add("app_url", StringType).add("image_url", StringType).add("animated_image_url", StringType).add("activity_zone_ids", ArrayType(StringType, true)))))).add("structures", MapType(StringType, new StructType().add("structure_id", StringType).add("thermostats", ArrayType(StringType, true)).add("smoke_co_alarms", ArrayType(StringType, true)).add("cameras", ArrayType(StringType, true)).add("away", StringType).add("name", StringType).add("country_code", StringType).add("postal_code", StringType).add("peak_period_start_time", TimestampType).add("peak_period_end_time", TimestampType).add("time_zone", StringType).add("eta", new StructType().add("trip_id", StringType).add("estimated_arrival_window_begin", TimestampType).add("estimated_arrival_window_end", TimestampType)).add("eta_begin", TimestampType).add("co_alarm_state", StringType).add("smoke_alarm_state", StringType).add("rhr_enrollment", BooleanType).add("wwn_security_state", StringType).add("wheres", MapType(StringType, new StructType().add("where_id", StringType).add("name", StringType)))))val nestTimestampFormat = "yyyy-MM-dd'T'HH:mm:ss.sss'Z'"val jsonOptions = Map("timestampFormat" -> nestTimestampFormat)val parsed = spark.readStream.format("kafka").option("kafka.bootstrap.servers", "localhost:9092").option("subscribe", "net-logs").option("startingOffsets", "earliest").load().select(from_json(col("value").cast("string"), schema, jsonOptions).alias("parsed_value"))import spark.implicits._val camera = parsed.select(explode($"parsed_value.devices.cameras")).select("value.*")camera.printSchema()val sightings = camera.select("device_id", "last_event.has_person", "last_event.start_time")val console = sightings.writeStream.format("console").outputMode(OutputMode.Append())val query = console.start()query.awaitTermination()} }

寫數據庫

// 寫入數據庫val url="jdbc:mysql://127.0.0.1:6606/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&useSSL=false"val user ="root"val pwd = "111608"val writer = new JDBCSink(url,user, pwd)val query =sightings.writeStream.foreach(writer).outputMode("update").trigger(Trigger.ProcessingTime("25 seconds")).start()query.awaitTermination()

json2

{"createTime" : 1536571926,"event" : {"frequency" : -1,"info" : {"VCU_VacmPumpSta" : {"diff_time" : [ 2, 11 ],"value" : [ 1, 0 ]}},"startTime" : -1},"iccid" : "89860117750045560712","signal1s" : {"frequency" : 1,"info" : {"APA_DistToparkslot" : [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],"APA_Process_bar" : [ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127 ],"BMS_ActlExchgCurnt" : [10016,10016,10021,10021,10021,10021,10012,10012,10012,10012,10012,10007,10007],"BMS_BatSOC_Actl" : [ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355 ],"BMS_BatSOC_Rpt" : [ 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355 ],"BMS_IsoResistance" : [ 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120 ],"ESC_VehicleSpeed" : [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],"HU_TargetSOC" : [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],"ICU_DisplayVehicleSpeed" : [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],"ICU_ICUTotalOdometer" : [3252,3252,3252,3252,3252,3252,3252,3252,3252,3252,3252,3252,3252],"LateralACC" : [ 201, 202, 201, 201, 201, 201, 201, 202, 201, 201, 202, 200, 201 ],"LongitudeACC" : [ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124 ],"SAS_Angle" : [32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767],"SAS_RotSpeed" : [32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767],"VCU_AcclPedalPos" : [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],"VCU_ActlMotorRotateSpd" : [10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000],"VCU_Actl_MotorRotateSpd" : [16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384],"VCU_Actl_MotorTorque" : [2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000],"VCU_BrkPedalPos" : [ 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 1, 2 ],"VCU_DrvRangeDistEst" : [ 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63 ],"VCU_DrvReq_MotorTorq" : [2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000],"VCU_MotorActualPower" : [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],"VCU_VhclPwrCnsmpActl" : [ 209, 209, 209, 209, 209, 209, 210, 210, 210, 210, 210, 210, 210 ],"YRS_YawRate" : [18000,18000,18000,18000,18000,18000,18000,18000,18000,18000,18005,18000,18000]},"startTime" : 0},"signal30s" : {"frequency" : 0.3333333432674408,"info" : {"AC_ActTotalPower" : [ 5 ],"AC_EnvirTemp" : [ 136 ],"AC_HVHActlPwr_HVAC" : [ 0 ],"AC_HVHDeviceInternTemp_HVAC" : [ 63 ],"AC_InAirPM25Value" : [ 36 ],"AC_IndoorTemp" : [ 126 ],"AC_OutAirQualityLevel" : [ 0 ],"AC_RefrgHiPressure" : [ 8 ],"AC_SeatHeatTemp_FL_Rsrv" : [ 0 ],"AC_SeatHeatTemp_FR_Rsrv" : [ 0 ],"BAT_HVHActlPwr" : [ -1 ],"BAT_HVHDeviceInternTemp" : [ -1 ],"BAT_HighVolDCTolalPwr" : [ -1 ],"BAT_PumpSpeedDutyRequest" : [ -1 ],"BMS_AuxHeatReqPower_Reserved" : [ 0 ],"BMS_BatCapacity" : [ 198 ],"BMS_BatSOH" : [ 1000 ],"BMS_BatteryDTC_Num" : [ 1 ],"BMS_BatteryDTC_list" : [[ 13698951 ]],"BMS_BatterySubSysCod" : [ 1 ],"BMS_BatterySubSysNum" : [ 1 ],"BMS_BatteryType" : [ 6 ],"BMS_CellVol" : [[3614,3614,3613,3614,3614,3614,3613,3613,3613,3613,3614,3613,3614,3615,3615,3614,3614,3614,3614,3614,3613,3614,3614,3614,3614,3614,3614,3614,3613,3613,3611,3613,3614,3614,3614,3615,3613,3613,3614,3614,3614,3614,3614,3614,3614,3614,3614,3614,3614,3615,3613,3614,3614,3614,3615,3614,3614,3614,3614,3615,3614,3615,3614,3615,3614,3615,3615,3615,3614,3614,3613,3614,3614,3614,3614,3614,3614,3615,3614,3614,3613,3614,3613,3614,3614,3614,3614,3614,3614,3614]],"BMS_CellVolAve" : [ 3613 ],"BMS_CellVolMax" : [ 3615 ],"BMS_CellVolMin" : [ 3611 ],"BMS_ContactorTempAve_DCCharger" : [ 70 ],"BMS_ContactorTempAve_Negative" : [ 73 ],"BMS_ContactorTempAve_Positive" : [ 72 ],"BMS_DCS_ActlChrgCurrent" : [ 0 ],"BMS_DCS_ActlChrgPower" : [ 0 ],"BMS_DCS_ActlChrgVoltage" : [ 0 ],"BMS_DC_AC_RemChrgTime" : [ 600 ],"BMS_ESS_InletColantActtemp" : [ 69 ],"BMS_ESS_InletColanttargettemp" : [ 70 ],"BMS_ESS_outletColantActtemp" : [ 70 ],"BMS_HVBatActlVoltage" : [ 3252 ],"BMS_HVBatCellTempAve" : [ 68 ],"BMS_HVBatCellTempMax" : [ 69 ],"BMS_HVBatCellTempMin" : [ 68 ],"BMS_HVcppltnTempAve" : [ 69 ],"BMS_HVcppltnTempMin" : [ 68 ],"BMS_HVcppltnTempmax" : [ 70 ],"BMS_MaxCellTemp" : [ 100 ],"BMS_MaxCellVol" : [ 4310 ],"BMS_MaxConDisCurnt" : [ 2000 ],"BMS_MaxInstanDisCurnt" : [ 3920 ],"BMS_MaxTempProbeCod" : [ 0 ],"BMS_MaxVolCellCod" : [ 14 ],"BMS_MinCellTemp" : [ 15 ],"BMS_MinCellVol" : [ 3050 ],"BMS_MinTempProbeCod" : [ 4 ],"BMS_MinVolCellCod" : [ 30 ],"BMS_NomCellCap" : [ 62 ],"BMS_PwrRecupMaxConChrgCurnt" : [ 1860 ],"BMS_PwrRecupMaxInstanChrgCurnt" : [ 3000 ],"BMS_TempProbe" : [[89,89,89,89,88,89,88,89,88,89,88,89,89,89,88,89,88,89]],"BMS_TotalCellNo" : [ 90 ],"BMS_TotalTempProbe" : [ 18 ],"GPS_Heading" : [ 0 ],"GPS_Latitude" : [ 0 ],"GPS_Longitude" : [ 0 ],"GPS_Speed" : [ 0 ],"ICU_AverageVehicleSpeed" : [ 0 ],"ICU_ICUTripAOdometer" : [ 0 ],"ICU_ICUTripBOdometer" : [ 0 ],"ICU_WashLiquidLevelWarn" : [ 0 ],"ICU_drive_time" : [ 0 ],"PTG_DoorOpenRatio" : [ 0 ],"TPMS_PressureValue_FL" : [ 255 ],"TPMS_PressureValue_FR" : [ 255 ],"TPMS_PressureValue_RL" : [ 255 ],"TPMS_PressureValue_RR" : [ 255 ],"TPMS_TireTempValue_FL" : [ 255 ],"TPMS_TireTempValue_FR" : [ 255 ],"TPMS_TireTempValue_RL" : [ 255 ],"TPMS_TireTempValue_RR" : [ 255 ],"VCU_AtmosPressure" : [ 204 ],"VCU_CruiseCtrTgtSpd" : [ 0 ],"VCU_MCU_Input_Curr" : [ 1024 ],"VCU_MCU_Input_Vol" : [ 648 ],"VCU_MCU_Temp" : [ 72 ],"VCU_MotorActualPower" : [ 0 ],"VCU_MotorDTC_Num" : [ 1 ],"VCU_MotorDTC_list" : [[ 134293412 ]],"VCU_MotorTemp" : [ 74 ],"VCU_PCUInletCooltTemp" : [ 72 ],"VCU_PwrCoolFanSpdDuty" : [ 2 ],"VCU_VacuumPressure" : [ 81 ],"VCU_VhclPwrCnsmpAvrg" : [ 144 ]},"startTime" : 0},"tboxSn" : "VE70045900-J7U0077","version" : "0.1.0.0","vin" : "XXXX000000000XXXX" }

Schema

package ohmysummer.pipeline.schemaimport org.apache.spark.sql.types._class DcSaleData {val schema = new StructType().add("createTime", IntegerType).add("iccid", StringType).add("tboxSn", StringType).add("version", StringType).add("vin", StringType).add("event", new StructType().add("frequency", IntegerType).add("info", new StructType().add("VCU_VacmPumpSta", new StructType().add("diff_time", ArrayType(IntegerType)).add("value", ArrayType(IntegerType)))).add("startTime", IntegerType)).add("signal1s",new StructType().add("frequency", IntegerType).add("info", new StructType().add("APA_DistToparkslot", ArrayType(IntegerType, true), true).add("APA_Process_bar", ArrayType(IntegerType, true), true).add("BMS_ActlExchgCurnt", ArrayType(IntegerType, true), true).add("BMS_BatSOC_Actl", ArrayType(IntegerType, true), true).add("BMS_BatSOC_Rpt", ArrayType(IntegerType, true), true).add("BMS_IsoResistance", ArrayType(IntegerType, true), true).add("ESC_VehicleSpeed", ArrayType(IntegerType, true), true).add("HU_TargetSOC", ArrayType(IntegerType, true), true).add("ICU_DisplayVehicleSpeed", ArrayType(IntegerType, true), true).add("ICU_ICUTotalOdometer", ArrayType(IntegerType, true), true).add("LateralACC", ArrayType(IntegerType, true), true).add("LongitudeACC", ArrayType(IntegerType, true), true).add("SAS_Angle", ArrayType(IntegerType, true), true).add("SAS_RotSpeed", ArrayType(IntegerType, true), true).add("VCU_AcclPedalPos", ArrayType(IntegerType, true), true).add("VCU_ActlMotorRotateSpd", ArrayType(IntegerType, true), true).add("VCU_Actl_MotorRotateSpd", ArrayType(IntegerType, true), true).add("VCU_Actl_MotorTorque", ArrayType(IntegerType, true), true).add("VCU_BrkPedalPos", ArrayType(IntegerType, true), true).add("VCU_DrvRangeDistEst", ArrayType(IntegerType, true), true).add("VCU_DrvReq_MotorTorq", ArrayType(IntegerType, true), true).add("VCU_MotorActualPower", ArrayType(IntegerType, true), true).add("VCU_VhclPwrCnsmpActl", ArrayType(IntegerType, true), true).add("YRS_YawRate", ArrayType(IntegerType, true), true)).add("startTime", IntegerType)).add("signal30s", new StructType().add("frequency", FloatType).add("info", new StructType().add("AC_ActTotalPower", ArrayType(IntegerType, true), true).add("AC_EnvirTemp", ArrayType(IntegerType, true), true).add("AC_HVHActlPwr_HVAC", ArrayType(IntegerType, true), true).add("AC_HVHDeviceInternTemp_HVAC", ArrayType(IntegerType, true), true).add("AC_InAirPM25Value", ArrayType(IntegerType, true), true).add("AC_IndoorTemp", ArrayType(IntegerType, true), true).add("AC_OutAirQualityLevel", ArrayType(IntegerType, true), true).add("AC_RefrgHiPressure", ArrayType(IntegerType, true), true).add("AC_SeatHeatTemp_FL_Rsrv", ArrayType(IntegerType, true), true).add("AC_SeatHeatTemp_FR_Rsrv", ArrayType(IntegerType, true), true).add("BAT_HVHActlPwr", ArrayType(IntegerType, true), true).add("BAT_HVHDeviceInternTemp", ArrayType(IntegerType, true), true).add("BAT_HighVolDCTolalPwr", ArrayType(IntegerType, true), true).add("BAT_PumpSpeedDutyRequest", ArrayType(IntegerType, true), true).add("BMS_AuxHeatReqPower_Reserved", ArrayType(IntegerType, true), true).add("BMS_BatCapacity", ArrayType(IntegerType, true), true).add("BMS_BatSOH", ArrayType(IntegerType, true), true).add("BMS_BatteryDTC_Num", ArrayType(IntegerType, true), true).add("BMS_BatteryDTC_list", ArrayType(ArrayType(IntegerType), true), true).add("BMS_BatterySubSysCod", ArrayType(IntegerType, true), true).add("BMS_BatterySubSysNum", ArrayType(IntegerType, true), true).add("BMS_BatteryType", ArrayType(IntegerType, true), true).add("BMS_CellVol", ArrayType(ArrayType(IntegerType), true), true).add("BMS_CellVolAve", ArrayType(IntegerType, true), true).add("BMS_CellVolMax", ArrayType(IntegerType, true), true).add("BMS_CellVolMin", ArrayType(IntegerType, true), true).add("BMS_ContactorTempAve_DCCharger", ArrayType(IntegerType, true), true).add("BMS_ContactorTempAve_Negative", ArrayType(IntegerType, true), true).add("BMS_ContactorTempAve_Positive", ArrayType(IntegerType, true), true).add("BMS_DCS_ActlChrgCurrent", ArrayType(IntegerType, true), true).add("BMS_DCS_ActlChrgPower", ArrayType(IntegerType, true), true).add("BMS_DCS_ActlChrgVoltage", ArrayType(IntegerType, true), true).add("BMS_DC_AC_RemChrgTime", ArrayType(IntegerType, true), true).add("BMS_ESS_InletColantActtemp", ArrayType(IntegerType, true), true).add("BMS_ESS_InletColanttargettemp", ArrayType(IntegerType, true), true).add("BMS_ESS_outletColantActtemp", ArrayType(IntegerType, true), true).add("BMS_HVBatActlVoltage", ArrayType(IntegerType, true), true).add("BMS_HVBatCellTempAve", ArrayType(IntegerType, true), true).add("BMS_HVBatCellTempMax", ArrayType(IntegerType, true), true).add("BMS_HVBatCellTempMin", ArrayType(IntegerType, true), true).add("BMS_HVcppltnTempAve", ArrayType(IntegerType, true), true).add("BMS_HVcppltnTempMin", ArrayType(IntegerType, true), true).add("BMS_HVcppltnTempmax", ArrayType(IntegerType, true), true).add("BMS_MaxCellTemp", ArrayType(IntegerType, true), true).add("BMS_MaxCellVol", ArrayType(IntegerType, true), true).add("BMS_MaxConDisCurnt", ArrayType(IntegerType, true), true).add("BMS_MaxInstanDisCurnt", ArrayType(IntegerType, true), true).add("BMS_MaxTempProbeCod", ArrayType(IntegerType, true), true).add("BMS_MaxVolCellCod", ArrayType(IntegerType, true), true).add("BMS_MinCellTemp", ArrayType(IntegerType, true), true).add("BMS_MinCellVol", ArrayType(IntegerType, true), true).add("BMS_MinTempProbeCod", ArrayType(IntegerType, true), true).add("BMS_MinVolCellCod", ArrayType(IntegerType, true), true).add("BMS_NomCellCap", ArrayType(IntegerType, true), true).add("BMS_PwrRecupMaxConChrgCurnt", ArrayType(IntegerType, true), true).add("BMS_PwrRecupMaxInstanChrgCurnt", ArrayType(IntegerType, true), true).add("BMS_TempProbe", ArrayType(ArrayType(IntegerType) , true), true).add("BMS_TotalCellNo", ArrayType(IntegerType, true), true).add("BMS_TotalTempProbe", ArrayType(IntegerType, true), true).add("GPS_Heading", ArrayType(IntegerType, true), true).add("GPS_Latitude", ArrayType(IntegerType, true), true).add("GPS_Longitude", ArrayType(IntegerType, true), true).add("GPS_Speed", ArrayType(IntegerType, true), true).add("ICU_AverageVehicleSpeed", ArrayType(IntegerType, true), true).add("ICU_ICUTripAOdometer", ArrayType(IntegerType, true), true).add("ICU_ICUTripBOdometer", ArrayType(IntegerType, true), true).add("ICU_WashLiquidLevelWarn", ArrayType(IntegerType, true), true).add("ICU_drive_time", ArrayType(IntegerType, true), true).add("PTG_DoorOpenRatio", ArrayType(IntegerType, true), true).add("TPMS_PressureValue_FL", ArrayType(IntegerType, true), true).add("TPMS_PressureValue_FR", ArrayType(IntegerType, true), true).add("TPMS_PressureValue_RL", ArrayType(IntegerType, true), true).add("TPMS_PressureValue_RR", ArrayType(IntegerType, true), true).add("TPMS_TireTempValue_FL", ArrayType(IntegerType, true), true).add("TPMS_TireTempValue_FR", ArrayType(IntegerType, true), true).add("TPMS_TireTempValue_RL", ArrayType(IntegerType, true), true).add("TPMS_TireTempValue_RR", ArrayType(IntegerType, true), true).add("VCU_AtmosPressure", ArrayType(IntegerType, true), true).add("VCU_CruiseCtrTgtSpd", ArrayType(IntegerType, true), true).add("VCU_MCU_Input_Curr", ArrayType(IntegerType, true), true).add("VCU_MCU_Input_Vol", ArrayType(IntegerType, true), true).add("VCU_MCU_Temp", ArrayType(IntegerType, true), true).add("VCU_MotorActualPower", ArrayType(IntegerType, true), true).add("VCU_MotorDTC_Num", ArrayType(IntegerType, true), true).add("VCU_MotorDTC_list", ArrayType(ArrayType(IntegerType) , true), true).add("VCU_MotorTemp", ArrayType(IntegerType, true), true).add("VCU_PCUInletCooltTemp", ArrayType(IntegerType, true), true).add("VCU_PwrCoolFanSpdDuty", ArrayType(IntegerType, true), true).add("VCU_VacuumPressure", ArrayType(IntegerType, true), true).add("VCU_VhclPwrCnsmpAvrg", ArrayType(IntegerType, true), true)).add("startTime", IntegerType)) }object DcSaleData {}

代碼(反序列化 value 中的字節數組, 得到原始 JSON)

package ohmysummerimport ohmysummer.pipeline.kafka.WmKafkaDeserializer import ohmysummer.pipeline.schema.DcSaleData import org.apache.spark.sql.{Dataset, SparkSession} import org.apache.spark.sql.streaming.OutputMode import org.apache.spark.sql.functions._/*** 從 Kafka 讀取 JSON 數據* https://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html* https://stackoverflow.com/questions/43297973/how-to-read-records-in-json-format-from-kafka-using-structured-streaming* https://stackoverflow.com/questions/48361177/spark-structured-streaming-kafka-convert-json-without-schema-infer-schema* https://databricks.com/blog/2017/04/26/processing-data-in-apache-kafka-with-structured-streaming-in-apache-spark-2-2.html* https://databricks.com/blog/2017/02/23/working-complex-data-formats-structured-streaming-apache-spark-2-1.html*/ object SparkStructuredStreaming {def main(args: Array[String]) {val spark = SparkSession.builder.appName("ReadFromKafka").master("local[*]").getOrCreate()object KafkaDeserializerWrapper {val deser = new WmKafkaDeserializer // val deser = new WmJsonDeserializer}spark.udf.register("deserialize", (topic: String, bytes: Array[Byte]) =>KafkaDeserializerWrapper.deser.deserialize(topic, bytes))val df = spark.readStream.format("kafka").option("kafka.bootstrap.servers", "localhost:9092").option("subscribe", "dc-sale-data").option("startingOffsets", "earliest") // 測試環境使用最早的數據.load()import spark.implicits._// 反序列化 value 中的字節數組, 得到原始 JSONval result: Dataset[(String, String)] = df.selectExpr("CAST(key AS STRING)", """deserialize("dc-sale-data", value) AS message""").as[(String, String)]val schema = (new DcSaleData).schemaval parsed = result.select($"key", from_json($"message", schema) as "data")//explode 接收的參數是 Array 或 Map,如果是 Struct, 得先轉換為 Arrayval event = parsed.select(explode(array($"data.signal1s.info"))).select("col.*")event.printSchema()val console = event.writeStream.format("console").outputMode(OutputMode.Append())val query = console.start()query.awaitTermination()} }

json3

{"sha1":"001ef1066b1b8232113b523a1b31c581413eae9a","type":["AT_pe"],"attrs":[{"id":"a88c8058f51558b7","name":"B(\"616D2063616E6E6F742062652072756E20696E20444F53206D6F\",C)"},{"id":"7860a6311925bf77","name":"S(\"Mod\",U)"},{"id":"6ffc0af1e970706b","name":"S(\".text\",at(\"PEHDR,0x200\"))"}],"attrs_id":"0fe01ef88ccb217d 249d34dc02c4d3b9 2ba0fcb46c07c40b ","attrs_number":35,"virus":[{"virus_name_kin":"HEUR:Worm/FakeFolder","huorong_vrius_name":"HEUR:Worm/FakeFolder.d","virus_name_id":"E947B71537A2F1FB"},{"virus_name_kin":"HEUR:Trojan/Fake","huorong_vrius_name":"HEUR:Trojan/Fake.a","virus_name_id":"D884D265EE15C549"}],"extracted":[{"sha1":"c8d5c7e77ea92fccddb9f4d10fe0b85b3a711011","type":["AT_pe"],"attrs":[{"id":"a88c8058f51558b7","name":"B(\"616D2063616E6E6F742062652072756E20696E20444F53206D6F\",C)"},{"id":"7860a6311925bf77","name":"S(\"Mod\",U)"},{"id":"6ffc0af1e970706b","name":"S(\".text\",at(\"PEHDR,0x200\"))"}],"attrs_id":"005a9d9a548d9873 0284ce8a1aaa5124 035f47fa7a2d3ffd","attrs_number":217,"virus":[{"virus_name_kin":"HEUR:Worm/FakeFolder","huorong_vrius_name":"HEUR:Worm/FakeFolder.d","virus_name_id":"E947B71537A2F1FB"},{"virus_name_kin":"HEUR:Trojan/Fake","huorong_vrius_name":"HEUR:Trojan/Fake.a","virus_name_id":"D884D265EE15C549"}]}] }

代碼

package pack01import org.apache.spark.sql.functions.{col, from_json} import org.apache.spark.sql.streaming.Trigger.ProcessingTime import org.apache.spark.sql.streaming.{OutputMode, StreamingQuery} import org.apache.spark.sql.types.{ArrayType, IntegerType, StringType, StructField, StructType} import org.apache.spark.sql.{DataFrame, SparkSession}object StructStreamingo1 {def main(args: Array[String]): Unit = {val session: SparkSession = SparkSession.builder().appName(this.getClass.getSimpleName).master("local[*]").getOrCreate()session.sparkContext.setLogLevel("WARN")val schema: StructType = new StructType().add("TaskId", IntegerType, true).add("LogStream", new StructType().add("sha1", StringType, false).add("type", ArrayType(StringType, true)).add("attrs", ArrayType(new StructType().add("id", StringType, true).add("name", StringType, true), true)).add("attrs_id", StringType, true).add("attrs_number", IntegerType, true).add("virus", ArrayType(new StructType().add("virus_name_kin", StringType, true).add("huorong_vrius_name", StringType, true).add("virus_name_id", StringType, true), true)).add("extracted", ArrayType(new StructType().add("sha1", StringType, false).add("type", ArrayType(StringType, true)).add("attrs", ArrayType(new StructType().add("id", StringType, true).add("name", StringType, true), true)).add("attrs_id", StringType, true).add("attrs_number", IntegerType, true).add("virus", ArrayType(new StructType().add("virus_name_kin", StringType, true).add("huorong_vrius_name", StringType, true).add("virus_name_id", StringType, true), true))), true), true)val nestTimestampFormat = "yyyy-MM-dd'T'HH:mm:ss.sss'Z'"val jsonOptions = Map("timestampFormat" -> nestTimestampFormat)import org.apache.spark.sql.functionsval df: DataFrame = session.readStream.format("kafka").option("kafka.bootstrap.servers", "node03:9092,node04:9092,node05:9092").option("subscribe", "hr_attribute_scan").option("kafka.group.id","test00002").option("startingOffsets", "earliest") // .option("startingOffsets", """{"topic1":{"0":23,"1":-2},"topic2":{"0":-2}}""").load().select(from_json(col("value").cast("string"),schema,jsonOptions).alias("parsed_value"))val df2: DataFrame = session.sql(s"""|select| parsed_value.LogStream.sha1,| parsed_value.LogStream.type,| parsed_value.LogStream.attrs,| parsed_value.LogStream.attrs_id,| parsed_value.LogStream.attrs_number,| parsed_value.LogStream.virus|from value|""".stripMargin)val query: StreamingQuery = df2.writeStream // .queryName("LogStream").format("console").outputMode("append").trigger(ProcessingTime("1 seconds")).start()query.awaitTermination()session.close()} }

總結

以上是生活随笔為你收集整理的Spark Structured Streaming 解析 JSON的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

99久久影院 | 亚洲国产欧洲综合997久久, | 欧美嫩草影院 | 美女视频黄免费网站 | 亚洲综合欧美激情 | 精品久久91| 91色网址 | 就操操久久| 日韩在线视频在线观看 | 免费能看的黄色片 | 成人黄色电影在线播放 | 日韩av男人的天堂 | 欧美精品三级在线观看 | 午夜美女wwww | 99久久精品国产一区二区成人 | 超级碰碰碰视频 | 18做爰免费视频网站 | 精品伦理一区二区三区 | 中文字幕在线观看网 | 国产精品一区二区久久国产 | 国产在线观看,日本 | 亚洲精品成人 | 丁香五婷| 国产九九热视频 | 亚洲精品一区二区18漫画 | 日韩一区二区三区观看 | 久草资源在线观看 | 国产黄色片在线免费观看 | 伊人成人精品 | 狠狠色狠狠色综合日日92 | 免费在线观看污网站 | 日韩午夜电影网 | 中文字幕在线看视频国产中文版 | 精品国产区在线 | 丁香午夜婷婷 | 国产精品黄色 | 国产一区国产精品 | www.狠狠| 超级碰碰碰免费视频 | 欧美男同视频网站 | 免费人做人爱www的视 | 精品国产网址 | 黄色一级动作片 | 最新av在线播放 | 狠狠狠的干 | 色香蕉在线视频 | 亚洲综合射 | 丝袜av网站| 中文字幕在线一二 | 中文字幕 第二区 | 国产精品一区在线观看 | 日韩欧美综合 | 亚洲在线精品视频 | 欧美日韩成人 | 91在线精品视频 | 国产小视频在线免费观看 | 麻豆91精品91久久久 | 国产精品一区二区av日韩在线 | 欧美一级裸体视频 | 亚洲精品一区二区三区新线路 | 中文字幕在线观看日本 | 日日夜夜免费精品 | av观看久久久 | 成人一级片视频 | 亚洲视频免费在线观看 | 久久精品日韩 | 超碰激情在线 | 在线观看免费日韩 | 黄色a大片 | 人人干人人草 | 夜夜骑日日| 亚洲女欲精品久久久久久久18 | 天天插天天操天天干 | 欧美日韩高清一区二区 国产亚洲免费看 | 久久一精品 | 日日夜夜添 | 在线观看av网 | 欧美 日韩精品 | 超碰个人在线 | 日韩精品电影在线播放 | 不卡的av在线 | 插婷婷| 六月婷婷久香在线视频 | 2019国产精品 | 精品一区二区三区在线播放 | 在线不卡视频 | 91精品导航| 97视频在线观看视频免费视频 | 国产精品 久久 | 久久综合五月 | 午夜精品一区二区三区在线观看 | 91人人澡人人爽人人精品 | 亚洲综合最新在线 | 在线免费观看视频一区二区三区 | 99久久精品免费看国产麻豆 | 福利一区二区三区四区 | 免费观看第二部31集 | 色www.| 蜜臀av夜夜澡人人爽人人桃色 | 69亚洲精品 | 99久久久久久久 | www.色婷婷.com | 麻豆视频免费入口 | av怡红院| 国产午夜视频在线观看 | 在线观看视频你懂的 | 91成品人影院 | 日韩1级片 | 96av麻豆蜜桃一区二区 | 亚洲麻豆精品 | 中文字幕在线观看日本 | 天堂av在线 | 久久久久久久久影视 | 九九在线精品视频 | 黄色软件网站在线观看 | 国产精品久久久久久影院 | 四虎在线免费观看 | 一级免费观看 | 国产黄色免费 | 999ZYZ玖玖资源站永久 | 91在线精品视频 | 国产在线欧美在线 | 成人播放器 | 久久好看| 亚洲黄色app| av免费片 | 婷婷色网 | 中文字幕免费一区二区 | 91精品推荐 | 国产美女被啪进深处喷白浆视频 | 日韩欧美黄色网址 | 蜜桃视频在线视频 | 日本久久片 | 美女视频永久黄网站免费观看国产 | 国产精品二区在线观看 | 黄色日本片 | 中中文字幕av | 亚洲欧美激情插 | 亚洲一区二区三区四区精品 | 国产成人三级在线 | 在线看一级片 | 久久一级电影 | 中文字幕中文字幕在线中文字幕三区 | 在线一区电影 | 亚洲精品资源在线观看 | 亚洲伊人婷婷 | 国产精品久久久久久久久免费 | 91丨九色丨蝌蚪丨对白 | 欧美成人播放 | 久久躁日日躁aaaaxxxx | 久久久亚洲麻豆日韩精品一区三区 | 亚洲精品动漫在线 | 午夜在线日韩 | 五月天.com | 亚洲精品午夜一区人人爽 | 91精品人成在线观看 | 欧美日韩中文在线视频 | 国产亚洲综合精品 | 成人av中文字幕在线观看 | 亚洲黄色免费 | 国产精品女同一区二区三区久久夜 | 国产丝袜在线 | 日日夜夜噜 | 欧美日韩精品综合 | 中文在线免费视频 | se婷婷 | 97视频在线看 | 日韩在线观看三区 | 欧美 日韩 性 | 欧美日韩一区二区免费在线观看 | 人人插人人爱 | 97成人精品视频在线播放 | a天堂免费 | 蜜桃视频在线视频 | 超碰人人草 | 天天干天天草天天爽 | 一区 二区 精品 | 欧美精品一区二区免费 | 国产精品2020 | 久操中文字幕在线观看 | 超碰精品在线观看 | 丁香六月在线 | h视频在线看 | 蜜臀av免费一区二区三区 | 韩日精品在线 | 成片免费观看视频大全 | 欧美精品一区二区性色 | 久久久久久久久电影 | 蜜臀精品久久久久久蜜臀 | 欧美精品国产综合久久 | 欧美精品一区二区蜜臀亚洲 | 欧美a级片免费看 | 在线观看第一页 | 亚洲精品国产成人 | 日韩电影中文,亚洲精品乱码 | 日韩精品一区二区三区中文字幕 | 81国产精品久久久久久久久久 | 国产一区二区在线视频观看 | 欧美日韩视频观看 | 国产成人一区二区三区免费看 | 在线观看一区 | 五月婷婷综合网 | av网站手机在线观看 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 国产黄色片久久 | 中文永久免费观看 | 精品国产亚洲在线 | 亚洲精品免费在线观看 | 成人免费毛片aaaaaa片 | 91视频 - x99av | 国产九九在线 | 亚洲国产精品成人精品 | 成人免费网站视频 | 久久97超碰| 精品欧美乱码久久久久久 | av一级免费 | 日韩免费中文字幕 | 婷婷激情5月天 | 免费看搞黄视频网站 | 成人毛片在线视频 | 69精品视频在线观看 | 天天摸夜夜添 | 天天色宗合 | 99视频在线观看视频 | 99在线精品视频 | 五月天高清欧美mv | 在线观看免费黄视频 | 综合激情| 制服丝袜在线91 | 久久久网页 | 久草在线免| 国产一区在线观看视频 | 中文字幕在线影视资源 | 中文字幕日韩精品有码视频 | 国产欧美综合视频 | 欧美一区成人 | av在线日韩 | 精品99999| 亚洲国产日韩一区 | 欧洲精品一区二区 | 911香蕉视频 | 亚洲国产成人高清精品 | 国产中文字幕视频在线观看 | 精品免费国产一区二区三区四区 | 免费在线中文字幕 | 日韩欧美国产精品 | 国产精品美女久久 | 综合久久久久久久久 | 国产黄色免费观看 | 精品国产欧美一区二区三区不卡 | www.久久久.com | 99精品视频观看 | 国产精品综合在线 | 免费性网站 | 亚洲视频精选 | 久久艹影院 | 在线观看中文字幕2021 | 二区三区毛片 | 亚洲黄色成人av | 麻豆 videos | 日韩一区二区三区不卡 | 91精品国产成人 | 日本不卡123 | 欧美黄在线 | 亚洲成人高清在线 | 在线视频福利 | 久久69精品久久久久久久电影好 | 黄污网站在线观看 | 婷婷色在线视频 | 一区二区精品在线观看 | 伊人夜夜| www.久久久 | 在线看片日韩 | 国产精品一区二区av影院萌芽 | 在线观看久 | 日本在线观看中文字幕无线观看 | 婷婷色5月| 免费网址在线播放 | 国产精品69久久久久 | 香蕉视频国产在线观看 | 国产96精品 | 国产成人一区二 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 91传媒在线播放 | av在线专区 | 国产精品情侣视频 | www日韩高清 | 国产精品美女久久久久aⅴ 干干夜夜 | 亚洲国产资源 | 亚洲成人频道 | 午夜av日韩 | 欧美精品成人在线 | 婷婷av电影 | 99久久久久国产精品免费 | 欧美色黄 | 福利视频精品 | 久久精品国产美女 | 中文字幕一区三区 | 18岁免费看片 | 在线免费观看国产精品 | 在线播放精品一区二区三区 | 国产精品视频免费看 | 97电影在线观看 | 少妇精69xxtheporn | 波多野结衣一区二区三区中文字幕 | 91桃色免费观看 | 婷婷综合av | 久久亚洲影院 | 天天综合婷婷 | 黄色成人在线观看 | 狠狠色伊人亚洲综合网站野外 | 色老板在线视频 | 在线播放日韩av | 六月色丁香 | 国产精品入口麻豆www | 精品国模一区二区 | 国产精品久久亚洲 | 国产精品国产三级国产aⅴ入口 | 成人sm另类专区 | 国产精品永久久久久久久久久 | 欧美成人黄色片 | av东方在线 | 热99久久精品 | 午夜精品福利影院 | 亚洲第五色综合网 | 91在线视频在线观看 | 亚洲日本va午夜在线影院 | 综合久久综合久久 | 午夜免费福利视频 | 高清一区二区 | 国产成人在线观看免费 | 国产精品专区在线观看 | 中文字幕日本在线 | 国产伦理精品一区二区 | 成人网在线免费视频 | 国产精品久久久久久久久久久久久久 | 国产一级性生活视频 | 99热精品在线观看 | 三级黄色大片在线观看 | 在线中文字幕一区二区 | 日韩免费看片 | 美女网站在线 | 久久精品看| 国产一级在线看 | 亚洲另类久久 | 亚洲香蕉在线观看 | 973理论片235影院9 | 97电影在线观看 | 91成人精品| 99热精品在线 | 国产精品不卡在线 | 久久九九视频 | 免费看一及片 | 亚洲精品动漫成人3d无尽在线 | av电影在线播放 | 麻豆91在线播放 | 日韩av不卡在线观看 | 日韩羞羞 | 天堂网一区 | 欧美一级免费 | 狠狠狠狠狠狠 | 91亚洲欧美 | 国产精品久久久777 成人手机在线视频 | 午夜国产一区二区三区四区 | 日韩精品久久久久久久电影竹菊 | 一级免费黄色 | 日本久久久精品视频 | 韩国av一区二区三区 | 日韩 在线a | 久久99国产精品自在自在app | 欧美日韩在线视频一区 | 免费91在线观看 | 一区二区三区四区久久 | 美女露久久 | 91九色视频在线 | 国产精品永久免费 | 色99之美女主播在线视频 | 成人黄色大片在线观看 | 日韩欧美一级二级 | 一区免费视频 | 亚洲精品电影在线 | 97人人爽| 精品亚洲一区二区三区 | 一区二区三区在线免费观看 | 99综合久久 | 91精品一区在线观看 | 国产a国产| 亚洲日本一区二区在线 | 狠狠色网 | 欧美在线一级片 | 国产日产欧美在线观看 | 欧美日韩国产高清视频 | 国产一区二区播放 | 国产麻豆精品传媒av国产下载 | 久久免费在线视频 | 视频一区二区视频 | 日韩免费一二三区 | 伊人国产在线观看 | 国产成人免费观看久久久 | 午夜精品一区二区三区免费视频 | 久久草网| 精品国产自在精品国产精野外直播 | 91天堂在线观看 | 婷婷色中文| 欧美一级视频免费看 | 黄色在线观看污 | 久久综合桃花 | 国产视频第二页 | 日韩影视在线观看 | 日韩欧美在线不卡 | 精品欧美小视频在线观看 | 五月婷婷激情五月 | 国产精品久久久久久久久费观看 | 天天综合日 | 日韩欧美在线综合网 | 日本视频高清 | 国产男女无遮挡猛进猛出在线观看 | 综合五月婷婷 | 午夜免费福利片 | 日韩va亚洲va欧美va久久 | 又黄又刺激又爽的视频 | 久草在线中文888 | 亚洲国产精品传媒在线观看 | 五月婷在线 | 国产韩国精品一区二区三区 | 中文字幕一区二区在线观看 | 国产成人精品电影久久久 | 草久久影院 | 久久精品国产一区二区电影 | 五月天伊人 | 成人在线视频网 | 草久在线视频 | 狠狠狠色狠狠色综合 | 狠狠插狠狠干 | 成人黄在线观看 | 国产精品毛片一区视频播不卡 | 精品在线观看一区二区 | 欧美日韩免费在线视频 | 丁香花在线视频观看免费 | 国产剧在线观看片 | 国产精品福利在线 | 在线观看精品视频 | 色综合综合 | 国产成人一区二区三区在线观看 | 久久精品久久精品 | 天天综合入口 | 天天草综合网 | 久草在线资源观看 | 伊甸园永久入口www 99热 精品在线 | 日本动漫做毛片一区二区 | 亚洲精品久| 亚洲精品在线观看不卡 | 亚洲欧洲中文日韩久久av乱码 | av再线观看 | 日日操网站 | 免费观看福利视频 | 夜夜操网| 久久丁香 | 日韩欧美69 | 久久精品99久久久久久2456 | 精品视频久久 | 国产精品久久久久久久久毛片 | 国产视频在线免费 | 成人一区在线观看 | 制服丝袜亚洲 | 在线看一级片 | 成人h在线播放 | 亚洲人xxx | 999久久久欧美日韩黑人 | 亚洲成人网在线 | 中文字幕在线日本 | 免费黄色在线 | 综合色婷婷 | 久久深夜 | 精品欧美小视频在线观看 | 夜夜夜 | 久久精品96 | av免费片| 免费在线观看av | 国产中文在线播放 | 九九免费在线看完整版 | 国产伦精品一区二区三区免费 | 91亚洲欧美激情 | 国产黄a三级三级 | 欧美精品一二三 | 在线看国产| 日本中文字幕系列 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 青青射 | 亚洲国产人午在线一二区 | 精品高清美女精品国产区 | av免费黄色 | 中文字字幕在线 | 久久精品2 | 免费观看一级一片 | 欧美日韩伦理一区 | 天天干,天天插 | 国产成人久久av免费高清密臂 | 婷婷五天天在线视频 | 国产一级片免费视频 | 国产精品午夜免费福利视频 | 狠狠色丁香久久婷婷综合丁香 | 国产视频在线免费 | 西西人体www444 | 国产精品成人久久 | 亚洲精品国产品国语在线 | 日韩av一区二区在线影视 | aav在线| 三级av网站 | 免费观看www小视频的软件 | 97超碰色| 五月激情丁香 | 国产黄a三级 | 国产三级午夜理伦三级 | 天天干天天操av | 91网站在线视频 | 久草在线视频网 | 人人网人人爽 | 国产成人精品女人久久久 | av解说在线| 日日婷婷夜日日天干 | 婷婷成人综合 | 中文成人字幕 | 国产成人av电影在线观看 | 欧美综合色在线图区 | 999国产| 久久免费视频播放 | 亚洲精品五月天 | 成人欧美日韩国产 | 天天天天天天天天操 | 国产黄色片一级三级 | 日日夜夜91 | 在线视频a| 亚州欧美精品 | 亚州精品天堂中文字幕 | 99热精品在线 | 91中文字幕永久在线 | 久久毛片高清国产 | 一区二区三区 中文字幕 | 精品欧美乱码久久久久久 | 99产精品成人啪免费网站 | 欧美一区二区三区在线视频观看 | 日韩久久精品一区二区 | 国产黄色在线看 | 日韩精品一区二 | 欧美日韩精品在线观看视频 | 国产精品国产三级国产aⅴ无密码 | 日本最新高清不卡中文字幕 | 中文字幕在线观看免费 | 黄色avwww| 丁香激情综合 | 国产麻豆成人传媒免费观看 | 亚洲视频,欧洲视频 | 成人黄色免费观看 | 天天操天天摸天天干 | 亚洲精品免费观看 | 黄色小说网站在线 | 九九爱免费视频 | 99精品乱码国产在线观看 | 最近免费观看的电影完整版 | 久久免费电影网 | 国产1区2| 中文字幕二区三区 | 热久久99这里有精品 | 超碰在线97免费 | 亚洲精品国产成人av在线 | 99精品美女 | 亚洲精品在线观看中文字幕 | 99热这里精品 | 午夜av电影| 日本精品久久久久久 | 99久久精品无码一区二区毛片 | 亚洲一区美女视频在线观看免费 | 日韩欧美一区二区在线 | 久久免费视频4 | 五月天.com| 国产亚洲欧美日韩高清 | 国产成人精品一区二区在线观看 | 激情影院在线观看 | 激情五月婷婷综合 | 国产精品久久综合 | 国产精品久久久久久高潮 | 国产91九色视频 | 久久久精品一区二区三区 | 国产精品久久久久国产精品日日 | av手机在线播放 | 日韩理论片 | 久久综合国产伦精品免费 | 欧美日韩免费看 | 欧美日韩大片在线观看 | 国产精品久久久av | 国产特级毛片aaaaaa高清 | 国产日韩精品一区二区 | 国产精品毛片久久久久久 | 久久人人爽人人片 | 亚洲精品美女在线观看播放 | 天天玩天天操天天射 | 一区二区三区四区五区在线 | 麻豆久久久 | 国产精品网站 | 天天操婷婷 | 97成人资源站 | 国产人成在线观看 | 精品美女视频 | 999电影免费在线观看2020 | 国产又粗又硬又爽的视频 | 中文免费观看 | 亚洲三级国产 | 成人av一区二区三区 | 欧美日韩一级久久久久久免费看 | 成人黄色电影在线播放 | 亚洲精品在线观看的 | 欧美日韩视频在线播放 | 欧美久久精品 | 亚洲成人网av | 日本中文字幕网 | 玖玖爱国产在线 | 精品亚洲一区二区三区 | 成人av视屏| av不卡中文字幕 | 国产经典 欧美精品 | 91中文视频 | 中文字幕一区三区 | 久久国产成人午夜av影院宅 | 欧美久草视频 | 久久99久久99久久 | 成人在线播放av | 最近中文字幕在线中文高清版 | 最新日韩在线观看视频 | a在线观看视频 | 热久久最新地址 | 久艹在线免费观看 | 日韩欧美高清在线观看 | 人人精品久久 | 一本一本久久a久久精品综合小说 | 国产精品 亚洲精品 | 福利视频入口 | 午夜在线免费视频 | 亚洲精品美女久久久久 | 久久久久久久国产精品视频 | 国产成人一区二区三区电影 | 国产又粗又硬又长又爽的视频 | 色噜噜日韩精品一区二区三区视频 | 999成人| 激情综合六月 | 久久久高清视频 | 精品国产午夜 | 91精品久久久久久综合五月天 | 麻豆久久久 | 偷拍精品一区二区三区 | 一区二区视频在线免费观看 | 美女网站色免费 | 中文字幕有码在线播放 | 中文字幕 国产视频 | 国产精品黑丝在线观看 | 久久精品www人人爽人人 | 亚洲欧美经典 | 日韩91在线 | 免费日韩在线 | 亚洲91精品在线观看 | 在线观看蜜桃视频 | 激情欧美xxxx | 丁香六月激情 | 国产精品v欧美精品v日韩 | 在线观看中文字幕一区二区 | 久久成人免费电影 | 91av视频观看 | 中文字幕在线观看第一页 | 狠狠干网 | 91av手机在线观看 | 欧美一级视频一区 | 免费观看一区二区三区视频 | 丝袜美腿亚洲综合 | av三级在线播放 | 日韩av影视在线观看 | 久久视频国产 | av天天在线观看 | 日韩欧美在线免费 | 亚洲一区视频在线播放 | 你操综合 | 国产精品毛片久久久久久 | 成人精品一区二区三区电影免费 | 夜夜躁狠狠燥 | 日韩av高清在线观看 | 久久免费视频一区 | 最新av在线播放 | 夜夜天天干 | 九九九九九精品 | 久久久久电影网站 | 国产自产在线视频 | 麻豆免费精品视频 | 国产高清中文字幕 | 国产理论片在线观看 | 久久久99国产精品免费 | 91日韩在线视频 | 九九热视频在线免费观看 | 国产淫片免费看 | 成人免费共享视频 | 人人插人人草 | 国产麻豆剧果冻传媒视频播放量 | 欧美精品国产综合久久 | 色婷婷88av视频一二三区 | 西西人体www444| 日韩视频一区二区三区在线播放免费观看 | 欧美激情视频在线免费观看 | 99久久99久国产黄毛片 | 一区中文字幕电影 | 久热av在线 | 成人久久毛片 | 日韩av中文 | 欧美久久久久久 | 500部大龄熟乱视频使用方法 | 日本精品二区 | 青青河边草观看完整版高清 | 国产美女精品视频 | 欧洲精品久久久久毛片完整版 | 综合久久2023 | 日韩精品免费在线观看视频 | 亚洲精品www久久久久久 | 日本三级人妇 | 久操操| 91精品区| 亚洲精品一区二区三区新线路 | 综合激情伊人 | 91热精品 | 国产中文字幕一区二区 | 国产精品大片免费观看 | 日韩v欧美v日本v亚洲v国产v | 在线观看视频免费播放 | 一区二区三区三区在线 | 日韩网站在线免费观看 | 日韩在线观看视频一区二区三区 | 国产专区视频在线 | 欧美日韩精品国产 | 国产69久久 | 天天激情综合 | 久久精品国产第一区二区三区 | 97超碰在线资源 | 色在线中文字幕 | 97电影在线观看 | 亚洲成人国产精品 | 成人免费一区二区三区在线观看 | 国产涩图 | 天天躁天天狠天天透 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 久热电影 | 亚洲国产三级在线观看 | 国产涩涩在线观看 | 日韩毛片在线一区二区毛片 | 午夜国产影院 | 中文一区二区三区在线观看 | 欧美成人999 | 国产视频一区二区三区在线 | 久久久影视 | 99综合电影在线视频 | 日本天天色 | 日本中文字幕在线视频 | 精品久久久久久久久久久院品网 | 亚洲成av人影片在线观看 | 婷婷5月激情5月 | 极品国产91在线网站 | 精品在线小视频 | 在线观看第一页 | 国产精品久久综合 | 国产一级做a | 久久只精品99品免费久23小说 | 91成人小视频 | 久亚洲 | 91网页版在线观看 | 色综合久久精品 | 亚洲一区动漫 | 国产精品男女啪啪 | 亚洲综合激情小说 | 日韩精品在线视频免费观看 | 色婷婷色 | 美女久久久久久 | 97成人精品视频在线观看 | adn—256中文在线观看 | 久久国精品| 99精品欧美一区二区三区黑人哦 | 美女免费视频网站 | 午夜在线日韩 | 国产精品成人国产乱 | 一区二区三区视频网站 | 亚洲国产精品va在线看黑人 | 五月婷婷激情六月 | 在线观看视频黄色 | 国产精品男女视频 | 2021av在线 | 午夜91视频| 伊人宗合| 92中文资源在线 | 午夜影视av| 黄色在线小网站 | 国产精品一区二区三区在线 | 国内精品视频在线播放 | 国产精品伦一区二区三区视频 | 久久精视频 | 91人人爽人人爽人人精88v | 中文字幕在线一二 | 亚洲精品18p | 亚洲九九爱 | 又长又大又黑又粗欧美 | 久久人视频| 免费v片 | 久久久精品国产免费观看一区二区 | 婷婷色狠狠 | 国产资源在线视频 | 欧美一级视频一区 | 99精品国产兔费观看久久99 | 久久国内精品 | 亚洲精品一区二区在线观看 | 久久国产系列 | 久久午夜国产 | 久久精品国产精品 | av网站地址 | 色综合久久久久久中文网 | 日本三级中文字幕在线观看 | 久久成人免费 | 在线观看免费 | 天天操天天添天天吹 | 高清一区二区 | 成人在线视频你懂的 | 亚洲国产精品va在线看黑人 | wwwwwww色| 精品国产电影一区二区 | 欧美成人视 | 最新中文字幕在线播放 | 午夜色影院 | 色老板在线视频 | 久久九精品 | 国产免费嫩草影院 | 亚洲综合在线视频 | 91香蕉视频在线下载 | 一区二区三区 中文字幕 | 欧美美女激情18p | 日韩在线欧美在线 | 精品久久久久亚洲 | 一级黄色片网站 | 97超碰网| 色 免费观看 | 国产又粗又猛又色又黄视频 | 玖草影院| 在线观看色网 | 97av色| 亚洲国产精品日韩 | 精品天堂av | 中文字幕一区二区在线观看 | 日韩精品在线观看视频 | 久久久久免费精品国产小说色大师 | 午夜电影av | 欧美黄网站 | 精品国产电影 | 国产成人三级三级三级97 | 欧美性春潮 | 精品色999| 久久综合久久88 | 久久艹影院 | 亚洲综合视频网 | 天天鲁天天干天天射 | 果冻av在线 | 日日躁你夜夜躁你av蜜 | 久草在线久 | 少妇啪啪av入口 | 91香蕉亚洲精品 | 亚洲国产三级在线观看 | 一本一道久久a久久精品蜜桃 | 激情五月***国产精品 | 色综合天天狠天天透天天伊人 | 玖玖精品在线 | a√资源在线 | 国产一区二区三区免费在线 | 成人午夜电影在线 | 亚洲伊人婷婷 | 91精品第一页 | 成人黄色短片 | 91桃色在线免费观看 | 爱干视频 | 久久国产精品一区二区三区 | 成人欧美在线 | 久久免费公开视频 | 精品免费久久 | 日韩国产精品毛片 | 91看片在线| 成人在线观看日韩 | 亚洲成熟女人毛片在线 | 天天操夜夜操国产精品 | 精品美女久久久久 | 日本中文字幕高清 | 蜜臀久久99精品久久久久久网站 | 久久精品亚洲一区二区三区观看模式 | 国产精品美女久久久久久久 | 日韩专区在线播放 | 精品久久国产 | 欧美日韩免费一区二区 | 天堂在线一区二区 | 欧美一级特黄高清视频 | 福利电影久久 | 天天操天天吃 | 91麻豆视频网站 | 欧美一级性生活视频 | 国内精品久久久久 | 亚洲专区中文字幕 | 国内精品久久久久久久久久清纯 | 日韩成人在线免费观看 | 成人免费 在线播放 | 深爱激情站 | 国产日产在线观看 | 亚洲午夜精品久久久 | 一区二区毛片 | 黄色午夜| 麻豆视频免费入口 | 精品国产一区二区三区av性色 | 欧美日韩国产二区 | 人人澡澡人人 | 中文字幕在线色 | 国产精品九九九 | 亚洲视频一区二区三区在线观看 | 精品视频久久久久久 | 亚洲综合色丁香婷婷六月图片 | 丁香婷婷综合激情五月色 | 久久精品国产亚洲a | 91手机电视 | 在线观看日韩精品视频 | 精品在线视频播放 | 青青看片 | 亚洲资源在线观看 | 免费成人av在线看 | 中文字幕视频免费观看 | 91色吧| 亚洲人天堂 | 国产亚洲一区 | 日韩电影在线看 | 久久久久久久久久久免费 | www.超碰97.com | 一级特黄aaa大片在线观看 | 亚洲国产理论片 | 中文字幕888| 波多野结衣在线观看视频 | 免费观看视频的网站 | 久久一区二 | 久久精品欧美日韩精品 | 一区二区三区三区在线 | 国产婷婷视频在线 | 国产精品区二区三区日本 | 成人手机在线视频 | 国产在线观看一 | 在线观看成人小视频 | 九九热视频在线免费观看 | 麻豆视频免费看 | 国产一级片免费视频 | 亚洲夜夜网 | 福利视频入口 | 91桃花视频 | 91网页版在线观看 | 成人免费观看网址 | 99久久精品国产亚洲 | 色婷婷综合久久久 | 色妞色视频一区二区三区四区 | 美女在线观看av | 手机看片午夜 | 欧美日韩视频 | www.夜色321.com| 人人看人人 | 天天干,天天草 | 久久久久久毛片精品免费不卡 | 免费观看黄色12片一级视频 | 97超碰人人澡人人爱学生 | wwwwww色| 欧美极品一区二区三区 | 91视频3p| 97福利在线| 免费在线观看午夜视频 | 日韩视频在线观看视频 | 天堂va在线观看 | 欧美国产高清 | 色综合久久88色综合天天 | 国产一区免费观看 | 午夜视频在线观看欧美 | 精品综合久久 | www色网站 | 人人模人人爽 | 久久婷婷一区二区三区 | 国产女v资源在线观看 | 超碰日韩 | 丁香五婷| 久久久久精| 国产一级片网站 | 久久国产精品一区二区三区 | av在线网站免费观看 | 四川妇女搡bbbb搡bbbb搡 | 中文理论片 | 国产白浆视频 | 国产成人性色生活片 | 中文字幕在线观看资源 | 国产一级在线观看 | 有码中文在线 | 国产超碰在线观看 |